jmail(jmail使用)
一、JMail 接收邮件的问题
当你收到乱码邮件后,如果让对方重发一次,既浪费时间,又显得你“露怯”,不如通过尝试以下方法自行解码:
1.根本设置对OutlookExpress进行根本设置,可彻底解决电子邮件的乱码。打开OutlookExpress后,选择“工具”→“选项”命令,单击“阅读”标签,再单击“字体”按钮,选择“简体中文(GB2312)”,同时把它设置为默认值。接下来,单击“国际设置”按钮,选中“为接收的所有的邮件使用默认的编码”,确定退出。如此设置后,当你打开所有邮件,通常都不会再出现乱码了。
2.选项查看通常情况下,没有进行上述邮件设置,导致邮件乱码情况居多。在OutlookExpress中,选择乱码邮件后,单击“查看”→“编码”→“简体中文(GB2312)”或“其他”→“简体中文(HZ)”,邮件内容即可展现。
3.转寄再收如仍显示乱码,可试着将乱码邮件转寄到自己的邮箱中,然后用OutlookExpress接收,有时即可顺利解码。
4.改名重读仍然不行可将邮件改名,存成一个后缀名为.eml的文件,由OutlookExpress打开一般都可以自动解码。
5.追根溯源对于采用不同编码标准产生的乱码邮件,解码工作比较专业,说起来会很生涩。我们不妨选择乱码邮件后,右键单击鼠标,在弹出的快捷菜单中选择“属性”命令,接着在出现的对话框中单击“详细资料”标签,再单击“邮件源文件”按钮,这时就会打开邮件源文件码,邮件内容显现。
6.巧妙骗解如问题仍得不到解决,接上一步操作,右键单击,选“复制”,将“邮件源文件”拷贝到系统的剪贴板上,然后用记事本将其打开。在邮件信头中添加Mime-Version:1.0Content-Transfer-Encoding:quoted-printable,注意信头中间不要空行,信头和信体之间要有一个空行,保存为.txt纯文本文件。接下来用资源管理器将其改名为.uue为后缀的文件并运行,这时会自动调用WinZip并“骗取”它来对乱码邮件进行解码工作,进而正确显示编码邮件的“庐山真面目”。
7.代码替换将乱码邮件存为一个.eml的文件,用记事本打开。然后打开一个正常邮件,选择并复制一呗代码:
Content-Type:text:/plain;
charset=“GB2312”
Content-Transfer-Encoding:quotedprintable
替换粘贴到乱码邮件的相应位置,保存后关闭邮件。这时乱码邮件变为正常邮件。
8.优化重组很多的邮件编辑软件以字符为单位处理文本,双字节的汉字被删除一半后,剩余部分会和相邻的汉字重新组合,使得文本面目全非。我们收到的绝大多数邮件属于此类。判断这类邮件时,只要乱码内容有很多“=”号,即可肯定为QP编码的邮件。这时我们需要将乱码邮件存成一个文本文件,然后使用以字符为单位的编辑软件,将乱码行的第一个字符删除。笔者有一个很笨但十分有效的办法,就是将乱码连接起来,不管多长,发现内容之间有两个“=”号,去掉其中的一个多余“=”号,后面的部分就会和相邻的乱码重新组成可识别的汉字。如果以上方法均不能奏效,则可以判断收到的乱码邮件未经过编码造成第8位字节滤掉而成为无法还原的死乱码文档,只好请对方重发邮件给你了。参考资料:百度一下
二、JMail的使用方法
1.首先下载jmail控件,然后安装(其实不安装也行,只要你能找到jmail.dll文件,然后注册该dll文件。这里不支持上传附件,否则我就把我下载的传上来了)。
附上手工注册它的批处理:
echo off
copy jmail.dll C:/windows/system32
regsvr32 jmail.dll
echo执行完毕!
pause
2.使用tlbimp c:/Program Files/Dimac/w3JMail4/jmail.dll/out:myJmail.dll/namespace:myJmail生成myJmail.dll后,copy到web的根目录的bin目录。
在ASP.Net页面中,用using myjmail;方法引用,例程如下:
protected void Page_Load(object sender, EventArgs e)
{
myjmail.Message jmail= new myjmail.Message();
DateTime t=DateTime.Now;
string subject="jmail test from web";
string body="<center>jmail test from web<br>test</center>";//tbContent.Text.Replace("/n","<br>");
string fromemail="xxxx@e165.com";
string toEmail="xxxx@e165.com";
//silent属性:如果设置为true,jmail不会抛出例外错误. jmail. send(()会根据操作结果返回true或false
jmail.Silent= true;
//jmail创建的日志,前提loging属性设置为true
//jmail.Logging=true;
//字符集,缺省为"us-ascii"
jmail.Charset="gb2312";
//信件的contentype.缺省是"text/plain"):字符串如果你以html格式发送邮件,改为"text/html"即可。
jmail.ContentType="text/html";
//添加收件人
jmail.AddRecipient(toEmail,"","");
jmail.From= fromemail;
//发件人邮件用户名
jmail.MailServerUserName="xxxx";
//发件人邮件密码
jmail.MailServerPassWord="xxxx";
//设置邮件标题
jmail.Subject=subject;
//邮件添加附件,(多附件的话,可以再加一条jmail.addattachment("c://test.jpg",true,null);)就可以搞定了。[注]:加了附件,讲把上面的 jmail.contenttype="text/html";删掉。否则会在邮件里出现乱码。
//jmail.addattachment("c://test.jpg",true,null);
//邮件内容
jmail.Body=body;
//jmail发送的方法
if(jmail.Send("smtp.e165.com",false))
lbResult.Text="已成功发送邮件。";
else
lbResult.Text="发送邮件失败!!!";
jmail.Close();
}
三、jmail组件的安装方法
你把jmail安装到windows系统的system32目录,这样你的软件放在任何文件夹都可正常运行了。组件这种东西本身就是为了共享才做出来的,安装一套,所有需要使用jmail服务的软件均可使用,如果每个软件都把它装到自己所在的文件夹,不但是对系统资源的浪费,而且这些软件同时运行的话还会互相冲突。打个比方,每个家庭为了用电都去建个小型发电厂,这现实吗?不如共同建个大型发电厂,大家共享使用,是吧?
另外你也最好打消把jmail集成到自己程序中的想法(虽然可以实现),这涉及版权问题。正版的jmail组件是要收费的,当然我知道你用的是破解版的,但作为软件开发者(或未来的软件开发者),我们也应该关注版权问题,这也是为我们自己将来的利益考虑。
你可以把自己的软件安装包和jmail的安装程序一起复制到其他电脑,在安装自己的软件后再安装jamil(要安装到system32目录中),这虽然麻烦些,但也不算难事。另外也可以把jmail安装程序作为插件集成到自己软件的安装包中(这个是允许的,只要你不去修改jmail本身及其附件。这也是目前很多软件安装程序的做法),在安装自己软件的时候自动提示安装jmail。