欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp.net发邮件的几种方法汇总

程序员文章站 2024-02-27 21:15:09
mailmessage提供属性和方法来创建一个邮件消息对象。通常可以先构建好mailmessage对象,然后设置它的属性的方式来构建邮件程序。常用的属性:from -- 发...

mailmessage
提供属性和方法来创建一个邮件消息对象。通常可以先构建好mailmessage对象,然后设置它的属性的方式来构建邮件程序。

常用的属性:
from -- 发送邮件的地址
to -- 接受邮件的地址
subject -- 邮件的标题
priority -- 邮件的优先级(有效值为high,low,normal)
attachments -- 返回一个集合,代表附件
bcc -- 密送地址
cc -- 抄送地址
body -- 获取或是设置电子邮件消息的内容
bodyformat -- 获取或是设置mailformat的枚举值,此值指定消息体邮件的格式(html格式、text格式)
bodyencoding -- 指定消息的编码方式编码(主要有base64,uuencode)
urlcontentbase :在html格式邮件中的url编码方式
urlcontentlocation:邮件信息的优先级(high, medium,low)

smtpmail
负责发送邮件的smtp协议,提供属性和方法通过使用windows 2000 cdosys 的消息组件的联合数据对象来发送邮件消息。
smtpmail类用到的是send方法,它的目的就是发送邮件,有两个重载方法。

1. smtpmail.send("发送邮件的地址","接受邮件的地址","邮件的标题","邮件消息的内容") 这个方法很简单,不适合发送带附件的邮件。

2. smtpmail.send(mailmessage) 此方法复杂、灵活,适合发送附件,而且可以设置mailmessage对象的各种属性值。 如果我们用asp.net写一个邮件发送的程序,那么首先应该如何得到smtp。有两种方法:第一种方法调用目前知名的邮件服务提供商的smtp,比如新浪、搜狐、网易的免费电子邮箱的smtp;第二种方法是自己装一个smtp虚拟服务器,这个在安装iis时一起装上去的。

mailattachment
与邮件附件有关的对象类,主要用来提供属性和方法来创建一个邮件附件对象。
构造函数
创建一个附件对象
mailattachment  objmailattachment = new mailattachment( "d:\test。txt" );//发送邮件的附件
调用形式

复制代码 代码如下:

mailmessage objmailmessage= new mailmessage();
objmailmessage.attachments.add( objmailattachment );//将附件附加到邮件消息对象中

封装的邮件发送类

复制代码 代码如下:

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 system.net;
using system.net.mail;
using system.text;

public class sendmail
...{
    public sendmail()
    ...{
    }
    private string _host;
    /**//// <summary>
    /// 服务器地址
    /// </summary>
    public string host
    ...{
        get ...{ return _host; }
        set ...{ _host = value; }
    }
    private int _port;
    /**//// <summary>
    /// 服务器端口
    /// </summary>
    public int port
    ...{
        get ...{ return _port; }
        set ...{ _port = value; }
    }
    private string _smtpusername;
    /**//// <summary>
    /// 发送人邮箱用户名
    /// </summary>
    public string smtpusername
    ...{
        get ...{ return _smtpusername; }
        set ...{ _smtpusername = value; }
    }
    private string _sendemail;
    /**//// <summary>
    /// 发送人邮箱帐号(只接收加密串,发邮件时解密)
    /// </summary>
    public string sendemail
    ...{
        get
        ...{
            return _sendemail;
        }
        set ...{ _sendemail = value; }
    }
    private string _replytoemail;
    /**//// <summary>
    /// 回复人邮箱账号
    /// </summary>
    public string replytoemail
    ...{
        get ...{ return _replytoemail; }
        set ...{ _replytoemail = value; }
    }
    private string _replyusername;
    /**//// <summary>
    /// 回复人用户名
    /// </summary>
    public string replyusername
    ...{
        get ...{ return _replyusername; }
        set ...{ _replyusername = value; }
    }
    private string _getemail;
    /**//// <summary>
    /// 收件人邮箱帐号
    /// </summary>
    public string getemail
    ...{
        get ...{ return _getemail; }
        set ...{ _getemail = value; }
    }
    private string _smtppassword;
    /**//// <summary>
    /// 发送人邮箱密码(只接收加密串,发邮件时解密)
    /// </summary>
    public string smtppassword
    ...{
        get ...{ return _smtppassword; }
        set ...{ _smtppassword = value; }
    }
    private string _content;
    /**//// <summary>
    /// 邮件内容
    /// </summary>
    public string content
    ...{
        get ...{ return _content; }
        set ...{ _content = value; }
    }
    private string _title;
    /**//// <summary>
    /// 邮件标题
    /// </summary>
    public string title
    ...{
        get ...{ return _title; }
        set ...{ _title = value; }
    }
    private string[] _cc = null;
    /**//// <summary>
    /// 抄送邮箱
    /// </summary>
    public string[] cc
    ...{
        get ...{ return _cc; }
        set ...{ _cc = value; }
    }
    private string[] _bcc = null;
    /**//// <summary>
    /// 密送邮箱
    /// </summary>
    public string[] bcc
    ...{
        get ...{ return _bcc; }
        set ...{ _bcc = value; }
    }
    /**//// <summary>
    ///发送邮件
    /// </summary>
    /// <returns>返回是否成功</returns>
    public bool send()
    ...{
        try
        ...{
            mailmessage objmailmessage;
            objmailmessage = new mailmessage(sendemail, _getemail, _title, _content);
            if (!string.isnullorempty(_replytoemail) && !string.isnullorempty(_replyusername))
            ...{
                mailaddress reply = new mailaddress(_replytoemail, _replyusername);
                objmailmessage.replytolist.add(reply);
            }
            objmailmessage.bodyencoding = encoding.getencoding(936);
            objmailmessage.isbodyhtml = true;
            if (cc != null && cc.length > 0)
            ...{
                foreach (string ccaddress in cc)
                ...{
                    objmailmessage.cc.add(new mailaddress(ccaddress));
                }
            }
            if (bcc != null && bcc.length > 0)
            ...{
                foreach (string bccaddress in bcc)
                ...{
                    objmailmessage.bcc.add(new mailaddress(bccaddress));
                }
            }
            smtpclient client = new smtpclient(this._host, this._port);
            if (!string.isnullorempty(this.smtpusername) && !string.isnullorempty(this.smtppassword))
            ...{
                client.credentials = new networkcredential(this.smtpusername, this.smtppassword);
            }
            client.enablessl = false;
            client.send(objmailmessage);
            objmailmessage.dispose();
            return true;
        }
        catch
        ...{
            return false;
        }
    }
}

调用方法及步骤:
1、创建sendmail类的一个对象,并依次给 这个对象发送邮件必须的参数,
2、调用 send()方法。

邮件的附件功能,自己也可以根据上面的介绍扩展 sendmail类。这里不在举例。

在asp.net利用本机的smtp虚拟服务器的smtp来发送邮件
首先说一下smtp配置。
        (1)右键点击“smtp虚拟服务器”选择“属性”->在“常规”选项卡中设置“ip地址(p)”,我设置的是192.168.1.100。
        (2)选择“访问”选项卡,点击“中继”,选上“仅以下列表”(默认是被选上的),点击“添加”,在“单台计算机”中加入192.168.1.100。
         提示,如果没有完成(2),则会出现大家常见的一种错误提示:服务器拒绝了一个或多个收件人地址。服务器响应为: 550 5.7.1 unable to relay for scucj@126.com (友情提示一下:错误中的邮件地址有所不同) 然后开始核心代码,其实和方法(一)的差不多。与(一)的主要区别在于:1.smtp的不同,2.objmailmessage.from中本方法可以随便填写,但是(一)中别随便填写那么利用asp.net(c#)发送邮件的核心代码如下:

复制代码 代码如下:

         //核心代码开始
         using system.web.mail;
         mailmessage objmailmessage;
         mailattachment objmailattachment;
         // 创建一个附件对象
         objmailattachment = new mailattachment( "d:\test.txt" );//发送邮件的附件
         // 创建邮件消息
         objmailmessage = new mailmessage();
         objmailmessage.from = "mysina@sina.com";//源邮件地址
         objmailmessage.to = "scucj@126.com";//目的邮件地址,也就是发给我哈
         objmailmessage.subject = "邮件发送标题:你好";//发送邮件的标题
         objmailmessage.body = "邮件发送标内容:测试一下是否发送成功!";//发送邮件的内容
         objmailmessage.attachments.add( objmailattachment );//将附件附加到邮件消息对象中
         //smtp地址
         smtpmail.smtpserver = "192.168.1.100";
         //开始发送邮件
         smtpmail.send( objmailmessage ); 

以上两种方法介绍到这里。最简单的利用上面方法是在页面添加一个服务器按钮,把除引用的语句放到按钮单击事件中去。当然,别忘记了引用的语句放在最上面。