asp.net发邮件的几种方法汇总
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 );
以上两种方法介绍到这里。最简单的利用上面方法是在页面添加一个服务器按钮,把除引用的语句放到按钮单击事件中去。当然,别忘记了引用的语句放在最上面。
上一篇: java堆排序概念原理介绍
下一篇: IIS/ASP.NET 管道