Jmail组件发送电子邮件

关于Jmail的使用介绍网上已经不少,我把自己的体验纪录一下,既帮助跟我一样的初学者也是个积累。
    Jmail的使用主要有以下几点:
    一. 安装:要在机器上安装Jmail组件,其实就是一个“Jmail.dll”,一般会被安装到

C:\windows\system32\目录中。如果下载到的仅仅是Jmail.dll这个文件,就可以手动放到这个目录,不过别的目

录应该也可以,我没试过。
    二. 注册:自动安装一般同时会自动注册,无需关心这个。但是下载的仅仅是Jmail.dll这个文件,那么必须

自己手动注册。注册的方法如下:在命令行窗口里运行命令“regsvr c:\windows\system32\jmail.dll”,当然

文件路径自己指定。
    三. 引用:把jmail.dll复制到Web站点的bin目录里,然后给站点添加COM引用。
    四. 写代码:类似如下,记得引用命名空间。


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

 

using jmail;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        jmail.MessageClass mail = new jmail.MessageClass();

        DateTime t = DateTime.Now;
        string subject = "Jmail test! " + t.ToString();
        string body = "Hello world!<br/>";
       
       
        string fromemail = "mymail@126.com";
        string toemail = "mail@china.com";
        //silent属性:如果设置为true,jmail不会抛出例外错误. jmail. send( () 会根据操作结果返回true

或false
        mail.Silent = true;
        //jmail创建的日志,前提loging属性设置为true
        mail.Logging = true;
        //字符集,缺省为"us-ascii"gb2312
        mail.Charset = "UTF-8";
        mail.Encoding = "BASE64";
        //信件的contentype. 缺省是"text/plain") : 字符串如果你以html格式发送邮件, 改为"text/html"

即可。
        mail.ContentType = "text/html";
        //添加收件人
        mail.AddRecipient(toemail, "", "");
        mail.From = fromemail;
        //发件人邮件用户名
        mail.MailServerUserName = "mymail@126.com";
        //发件人邮件密码
        mail.MailServerPassWord = "123";
        //设置邮件标题
        mail.Subject = subject;
        //邮件添加附件,(多附件的话,可以再加一条jmail.addattachment( "c:\\test.jpg",true,null);)就

可以搞定了。[注]:加了附件,讲把上面的jmail.contenttype="text/html";删掉。否则会在邮件里出现乱码
        //mail.AddAttachment("c:\\test.jpg", true, null);
        //邮件内容
        mail.Body = body + t.ToString();
        //jmail发送的方法
        if (mail.Send("smtp.126.com", false))
        {
            Response.Write("<script language='javascript'>alert('OK!')</script>");
        }
        else
        {
            Response.Write("<script language='javascript'>alert('False!')</script>");
            Response.Write(mail.ErrorCode.ToString() + "<br/>" + mail.ErrorMessage.ToString() +

"<br/>" + mail.ErrorSource.ToString() + "<br/>");
        }
        mail.Close();
    }
}

//遇到的错误
通常我们遇到的错误是:'The message was undeliverable. All servers failed to receive the message ',这其实是JMAIL返回的错误,并不是ASP代码产生的,根本原因是MAIL SERVER拒绝了JMAIL的请求.

究其原因,是那些服务器不提供SMTP服务或者没有开启smtp服务;或是在服务器端开启了'禁止邮件中继服务'选项,也就是说不在其允许的IP段或指定范围内的空间里的程序是无法使用其SMTP服务的。解决方案:使用支持smtp的邮件服务器. 使用支持外来jmail申请验证身份,发送邮件的邮件服务器。 最好:使用自己的待遇smtp功能的企业邮局。因为外面的免费的邮局可能会有一些特殊设置,不如防止垃圾邮件,防止盗用邮件身份等等!


Jmail发送首先要通过邮件服务器验证。
如果你的服务器不支持SMTP或者你的账号不能使用SMTP服务
那么就无法发送。

163以前的用户默认是开通POP和SMTP服务的
但新用户都不开通,需要付费才能使用。

要想确定某一邮箱是否可以使用POP和SMTP,你可以用foxmail等邮件软件看能否收取该邮箱信件。

posted @ 2009-09-02 09:15  jyogou  阅读(1058)  评论(0编辑  收藏  举报