|
Jmail组件是由Dimac公司开发的用来完成邮件的发送、接受、加密和集群传输等工作的。它支持从POP3邮件服务器收取邮件,支持加密邮件的传输,而且工作效率非常高。 下面对Jmail.SMTPmail对象的属性和方法进行简要说明。 Jmail组件的常用属性如下表所示。 表 Jmail组件常用属性及说明 属性 | 说明 | Charset | 字符集 | Encoding | 设置附件的编码方式 | ContentType | 邮件的内容类型 | ISOEncodeHeaders | 是否将信头编码成iso-8859-1字符集 | Priority | 邮件的优先级 | From | 发件人的E-mail地址 | FromName | 发件人姓名 | Subject | 邮件主题 | MailServerUserName | 登录邮件服务器的用户名 | MailServerPassWord | 登录邮件服务器的用户密码 |
Jmail组件的常用方法如下表所示。 表 Jmail组件常用方法及说明 方法 | 说明 | AddHeader(XHeader,Value) | 添加用户定义的信件标头 | AddRecipient(emailAddress,recipientName,PGPKey) | 添加收件人E-mail地址、姓名并对其加密 | AddRecipientCC(emailAddress,recipientName,PGPKey) | 添加抄送人E-mail地址、姓名并对其加密 | AddRecipientBCC(emailAddress, PGPKey) | 添加密送人E-mail地址并对其加密 | AddAttachment(URL,附件名) | 添加附件 | Send() | 发送邮件 | Connect() | 同邮件服务器建立连接,并接收邮件 | DeleteMessages() | 清空邮件服务器中的邮件 | Disconnect() | 断开和邮件服务器的连接 |
在使用Jmail组件发送电子邮件之前,首先需要添加对Jmail组件的引用,其具体步骤如下: (1)在“解决方案资源管理器”中找到要添加引用的网站项目,单击鼠标右键,选择快捷菜单中的“添加引用”选项。 (2)在打开的“添加引用”对话框中选择“浏览”选项卡并选择要引用的jmail.dll文件,单击“确定”按钮,将Jmail组件添加到网站项目的引用中,然后就可以直接在后台代码中使用其属性和方法。 注意:Jmail组件不是ASP.NET 2.0中自带的组件,使用时需要安装,Jmail安装文件参见本书附带光盘。另外,在本地计算机上要注册该组件,具体方法是:例如该组件放在C:\Jmail\Jmail.dll下,注册时只需在“运行”里运行“Regsvr32 C:\Jmail\Jmail.dll”即可。 下面将通过一个简单的例子,使读者初步了解Jmail组件。首先建立一个sendEmail方法,参数 sender, receiver,subject,body,eserver分别代表发信人、收信人、主题、邮件内容和服务器地址,然后通过调用这个方法将填写完整的电子邮件发送出去,具体代码如下。 public void sendEmail(string sender,string receiver, string subject, string body, string eserver) { jmail.MessageClass jmMessage = new jmail.MessageClass(); jmMessage.Charset = "GB2312"; jmMessage.ISOEncodeHeaders = false; jmMessage.From = sender; jmMessage.Subject = subject; jmMessage.AddRecipient(receiver, "", ""); if (this.upFile.PostedFile.ContentLength != 0) { string sFilePath = this.upFile.PostedFile.FileName; jmMessage.AddAttachment(@sFilePath, true, ""); } jmMessage.Body = body; if (jmMessage.Send(eserver, false)) { Page.RegisterClientScriptBlock("ok", "<script language=javascript>alert('发送成功')</script>"); } else Page.RegisterClientScriptBlock("ok", "<script language=javascript>alert('发送失败,请仔细检查邮件服务器的设置是否正确!')</script>"); jmMessage = null; } | 实现电子邮件的接收功能时,首先需要配置POP3服务,步骤如下:(1)在“控制面板”中双击“添加或删除程序”,会弹出“添加或删除程序”窗口。 (2)单击“添加/删除Windows组件”,会弹出“Windows组件向导”,在“Windows组件向导”对话框中选择“电子邮件服务”复选框,,依次单击“下一步”按钮,完成“电子邮件服务”的添加操作。 选中“电子邮件服务”复选框之后,单击【详细信息】按钮,会弹出“电子邮件服务”对话框,可以有选择性的安装组件。 (2)当添加完“电子邮件服务”后,打开“管理工具”对话框,这时将会出现一项新的功能,即“POP3服务”。 (3)双击打开“POP3”服务,右键单击“MRLS”,弹出“添加域”窗口,在此添加一个新域(如163.com),单击“确定”按钮。 (4)当添加完“域”后,选中相应的域,并在指定域内添加邮箱名和密码,然后单击“确定”按钮即可。 注意:所有域都在本机上分出一定的空间来存放信息,默认位置为“C:\Inetpub\mailroot\Mailbox”。 至此,配置邮件服务器的工作就结束了,下面介绍如何使用Jmail组件发送和接收电子邮件,首先要引用Jmail组件,具体引用的方法前面已经讲解,这里就不再赘述了。下面给出使用Jmail组件发送和接收电子邮件的关键代码供读者参考学习。 当使用Jmail组件发送电子邮件时,首先创建一个MessageClass对象,设置好MessageClass 对象jmMessage的Charset、ISOEncodeHeaders、From和Subject等属性后调用其Send方法将邮件发送出去,具体代码如下。 jmail.MessageClass jmMessage = new jmail.MessageClass(); jmMessage.Charset = "GB2312"; jmMessage.ISOEncodeHeaders = false; jmMessage.From = sender; jmMessage.Subject = subject; jmMessage.AddRecipient(receiver, "", ""); if (this.upFile.PostedFile.ContentLength != 0) { string sFilePath = this.upFile.PostedFile.FileName; jmMessage.AddAttachment(@sFilePath, true, ""); } jmMessage.Body = body; if (jmMessage.Send(eserver, true)) { Page.RegisterClientScriptBlock("ok", "<script language=javascript>alert('发送成功')</script>"); } else Page.RegisterClientScriptBlock("ok", "<script language=javascript>alert('发送失败,请仔细检查邮件服务器的设置是否正确!')</script>"); jmMessage = null; |
若想接收邮箱中的电子邮件,首先必须与邮件服务器建立连接。通过Jmail组件中POP3Class类的Connect方法可以轻松地实现这一功能,Connect方法的参数分别代表邮箱用户名、密码、服务器地址和服务器端口号,具体代码如下。 jmail.POP3Class popMail = new jmail.POP3Class(); popMail.Connect(TxtPopUser.Text.Trim(),TxtPopPwd.Text.Trim(),TxtPopServer.Text.Trim(),Convert.ToInt32(TxtPopPort.Text.Trim())); |
当与邮件服务器建立连接之后,创建一个Message对象,利用POP3Class类中的Messages方法将其初始化,Messages方法的参数代表邮箱中邮件的索引号,也就是邮箱中第几封邮件,如果要读取第一封邮件,则参数为1,如果读取第二封邮件,则参数为2,以此类推。具体代码如下。 jmail.POP3Class popMail = new jmail.POP3Class(); jmail.Message mailMessage; mailMessage = popMail.Messages[Convert.ToInt32(TextBox1.Text)]; mailMessage.Charset = "GB2312"; mailMessage.Encoding = "Base64"; mailMessage.ISOEncodeHeaders = false; txtpriority.Text = mailMessage.Priority.ToString(); txtSendMail.Text = mailMessage.From; txtSubject.Text = mailMessage.Subject; txtBody.Text = mailMessage.Body; txtSize.Text = mailMessage.Size.ToString(); |
|