Asp.net 邮件传输(转)
下面说下我总结办法:
第一种方法:
using System.Web.Mail;
public void sendMail()
{
MailMessage mail1 = new MailMessage();
mail1.Body="body here";
mail1.From="xxx@xxx.com";
mail1.To="yyy@yyy.com";
mail1.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",1);
mail1.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername","xxx@xxx.com");
mail1.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword","********");
SmtpMail.SmtpServer="mail.xxx.com";
SmtpMail.Send(mail1);
}
以上添加的几个 Fields 是用来作SMTP发信认证的,如果你的发信服务器不需要认证,就可以省略这几句。
第二种方法:
using System.Net.Mail;
方法一:向单个地址发送邮件,不设置web.config文件
public void SendMail()
{
string mailto = "to@company.com";
string mailfrom = "from@company.com";
System.Net.NetworkCredential credential = new System.Net.NetworkCredential("from_username", "from_password");
SmtpClient smtp = new SmtpClient("smtp.company.com");
smtp.Credentials = credential;
MailMessage message = new MailMessage(mailfrom, mailto);
message.SubjectEncoding = System.Text.Encoding.UTF8;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.Subject = "subject here";
message.Body = "body here";
smtp.Send(message);
message.Dispose();
}
方法二、向单个地址发送邮件,设置web.config文件
public void SendMail()
{
string mailto = "to@company.com";
string mailfrom = "from@company.com";
MailMessage message = new MailMessage(mailfrom, mailto);
message.SubjectEncoding = System.Text.Encoding.UTF8;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.Subject = "subject here";
message.Body = "body here";
smtp.Send(message);
message.Dispose();
}
在web.config中添加如下:
<system.net>
<mailSettings>
<smtp from="from@company.com">
<network host="smtp.company.com" port="25" userName="from_username" password="from_password"/>
</smtp>
</mailSettings>
</system.net>
方法三:群发邮件,设置web.config文件
public void SendEmail()
{
string mailto = "to1@company.com,to2@company.com";
string title = "mail title here";
string content = "mail content here";
SmtpClient smtp = new SmtpClient();
MailMessage message = new MailMessage();
MailAddressCollection address = new MailAddressCollection();
string[] mailtos = mailto.Split(',');
for (int i = 0; i < mailtos.Length; i++)
{
address.Add(mailtos[i]);
}
foreach (MailAddress add in address)
{
message.To.Add(add);
}
message.SubjectEncoding = System.Text.Encoding.UTF8;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.Subject = title;
message.Body = content;
smtp.Send(message);
message.Dispose();
address.Clear();
}
在web.config中添加如下:
<system.net>
<mailSettings>
<smtp from="from@company.com">
<network host="smtp.company.com" port="25" userName="from_username" password="from_password"/>
</smtp>
</mailSettings>
</system.net>
采用以上方法,如果运行发信程序的计算机上装有邮件监控等杀毒软件,会有失败的警告,但实际已发送成功。解决办法是关闭杀毒软件的监控功能。
下面这个记得加上命名空间:
using System.Net;
using System.Net.Cache;
using System.Net.Mail;
using System.Net.Configuration;
using System.Web.Configuration;
适用的框架:asp.net framework 2.0/.net framework3.0/.net framework3.5
在web.config里设置.net framework的网络连接
- <system.net>
- </system.net>
如下:设置stmp邮件发送的配置
- //父元素:configuration(提供所有名称空间的配置)
- <system.net>
- //这里还可以加入如下元素的设置
- //authenticationModules:设置用来验证WEB请求的模块
- //connectionManagement:设置WEB服务器最大连接数
- //defaultProxy:设置http的代理服务器
- //mailSettings:配置smtp
- //requestCaching:控制网络请求缓存机制
- //settings:为System.NET配置基本网络选项
- //<webRequestModules>元素(网络设置):指定模块从WEB服务器请求信息。
- <mailSettings>
- //deliveryMethod设置邮件发送方式,这里是网络形式
- <smtp deliveryMethod="Network" from="xxx@yyy.com" >
- //host邮件发送服务器
- //userName发送邮件时,用来进行身份验证的用户名
- //password如下验证时的密码
- <network host="smtp.yyy.com" userName="xxx@yyy.com" password="zzzzzzz" />
- </smtp>
- </mailSettings>
- </system.net>
以编程的方式获取web.config里的smtp配置
NetSectionGroup类
命名空间
System.Net.Configuration:为应用程序提供了以编程方式访问和更新配置文件System.Net命名空间下的设置的类。
程序集
System
定义:
public sealed class NetSectionGroup : ConfigurationSectionGroup
说明:
这个类提供了以程序方式访问存储在配置文件里的信息。
这个类和网络设置文档里的system.net元素(网络设置)相对应。
这部分的为下列名称空间提供配置设置:
System.Net
System.Net.Cache
System.Net.Mail
在程序里读取configuration/system.net/mailSettings/stmp配置
- //NetSectionGroup在上面已经介绍过了
- //GetSectionGroup从指定的配置文件获取system.net的配置
- //WebConfigurationManager.OpenWebConfiguration
- //打开应用程序根目录下的web.config生成System.Configuration.Configuration对象实例
- SmtpSection cfg = NetSectionGroup.GetSectionGroup(WebConfigurationManager.OpenWebConfiguration("~/web.config")).MailSettings.Smtp;
发送电子邮件
- try{
- //实例化一个邮件消息对象
- MailMessage email = new MailMessage(cfg.From, mailto);
- email.IsBodyHtml = true;
- email.Body = "要发送的邮件内容,上面已经设置可以支持html内容,例外还可以通过指定email.BodyEncoding属性设置邮件内容的编码";
- email.Subject = "邮件主题,通过指定email.SubjectEncoding属性设置邮件主题的编码";
- //实例化smtp客服端对象,用来发送电子邮件
- System.Net.Mail.SmtpClient stmp = new SmtpClient(cfg.Network.Host);
- //设置是否需要发送是否需要身份验证,如果不需要下面的credentials是不需要的
- stmp.UseDefaultCredentials = true;
- stmp.Credentials = new System.Net.NetworkCredential(cfg.Network.UserName, cfg.Network.Password);
- //发送邮件
- stmp.Send(email);
- }
- catch (Exception ex)
- {
[转]:http://www.cnblogs.com/matrix/archive/2004/05/20/10495.aspx
现在的邮件发送大多数需要STMP的身份验证,
.NET里面的
System.Web.Util
System.Web.Mail
就不可以了.
我写这篇文章是希望对大家开发项目有所帮助,高手见笑了
先要去找一个组件,名字叫 JMail
大家可以去网上找一下,下载下来安装上.
将jmail.dll引用到工程中
private void Button1_Click(object sender, System.EventArgs e)
{
jmail.Message Jmail=new jmail.Message();
DateTime t=DateTime.Now;
String Subject=" From EMail .net";
String body="你好科学12:15";
String FromEmail="ljt21@163.com";
String ToEmail="xiao-maolover@163.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="ljt21" ;
//发件人邮件密码
Jmail.MailServerPassWord="****" ;
//设置邮件标题
Jmail.Subject=Subject;
//邮件添加附件,(多附件的话,可以再加一条Jmail.AddAttachment( "c:\\test.jpg",true,null);)就可以搞定了。[注]:加了附件,讲把上面的Jmail.ContentType="text/html";删掉。否则会在邮件里出现乱码。
Jmail.AddAttachment( "c:\\test.jpg",true,null);
//邮件内容
Jmail.Body=body+t.ToString();
//Jmail发送的方法
Jmail.Send("smtp.163.com",false);
Jmail.Close() ;
}
这样就OK了..!
经过测试的,没有问题.
Asp.net 自动发送邮件的方法
今天有一个模块需要自动发送邮件的功能,就随便写了一个,记录一下作为积累。
一、首先需要配置web.config文件:
<system.net>
<mailSettings>
<smtp from="Emailname">
<network host="smtp.163.com" userName="Emailname" password="Emailpassword"
port="25" defaultCredentials="false"/>
</smtp>
</mailSettings>
</system.net>
二、然后编写发送邮件的函数:
<summary>
/// 邮件发送方法(带附件)
/// </summary>
/// <param name="mailto">收件人地址。如:receiver@163.com</param>
/// <param name="mailsubject">邮件标题</param>
/// <param name="mailbody">邮件正文</param>
/// <param name="mailFrom">邮件发送人地址。如:sender@163.com</param>
/// <param name="list">附件路径</param>
/// <returns></returns>
public bool MySendMail(string mailto, string mailsubject, string mailbody, string mailFrom, ArrayList list)
{
try
{
//邮件发送人地址
System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress(mailFrom);
//如test@163.com,初步测试,用test@sina.com不行,用163的邮件服务器,就必须用163邮箱的用户名
//收件人地址
System.Net.Mail.MailAddress to = new System.Net.Mail.MailAddress(mailto);//如test@tom.com
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(from, to);
mail.Subject = mailsubject;
mail.Body = mailbody;
//以下设置服务器
System.Net.Mail.SmtpClient mySmth = new System.Net.Mail.SmtpClient();
//以下为增加附件
int count = list.Count;
for (int i = 0; i < count; i++)
{
System.Net.Mail.Attachment data = new System.Net.Mail.Attachment(list[i].ToString());
mail.Attachments.Add(data);
}
mySmth.Send(mail);
mail.Dispose();
return true;
}
catch
{
return false;
}
}
三、最后就是对函数的调用了:
//自动发送邮件
string mailSubject = "会员注册确认函";
string mailBody = "正文内容。";
string mailFrom = ConfigurationManager.AppSettings["SendMail"];
ArrayList List = new ArrayList();
List.Add(Server.MapPath(ConfigurationManager.AppSettings["SendMailText"]));
if (MySendMail(this.txtEmail.Text, mailSubject, mailBody, mailFrom, List))
{
...
//发送成功,进行相应处理
}
else
{
...
//发送失败,进行相应处理
return;
}
转载于:https://www.cnblogs.com/xiachufeng/archive/2010/05/18/1738210.html
Asp.net 邮件传输(转)相关推荐
- Asp.net 邮件传输
Asp.net 邮件传输(转) 因为项目需要,我本来做的是通过密码问题找回用户忘记的密码,结果客户要邮件自动发送的那种找回密码,还要用自己的邮件服务器.那么我怎么办?还要留个邮件服务器接口,好难做啊, ...
- c语言socket/smtp 邮件 附件,SMTP邮件传输协议发送邮件和附件 1
在以前接触的项目中,一直都是在做网站时用到了发送mail 的功能,在asp 和.net 中都有相关的发送mail 的类, 实现起来非常简单.最近这段时间因工作需要在C++ 中使用发送mail 的功能, ...
- JavaMail学习笔记(一)、理解邮件传输协议(SMTP、POP3、IMAP、MIME)
电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行传递,就必须遵循一定的规则,这些规则就是邮件传输协议.SMTP协议定了邮件客户端与SMTP服务之间,以及两台SMTP服务器之间发送邮 ...
- JavaMail学习之一-邮件传输协议
协议:规定好的格式就是协议.就像http协议有请求协议和响应协议,邮件传输也分为发.收邮件的协议. 邮件协议分3种: 发邮件的:SMTP (Simple Mail Transport Protoca ...
- Office365 Exchange Hybrid No.15 DNS切换及邮件传输排错
完成混合部署以及相关后续工作后,接下来就是公网DNS切换及邮件传输测试,此部分应当只非工作时间进行(意味着要加班加班加班哈哈哈哈) 公网DNS切换,就如之前文章中说的,需要将MX记录指向Office3 ...
- Linux中最受欢迎的邮件传输代理(MTA)
MTA(Mail transfer Agent) -对于服务器管理员来说,邮件传输代理是最为重要的工具.MTA的主要工作就是将电子邮件从一台主机发送到另一台主机.MTA使用SMTP(简单邮件传输协议) ...
- Postfix实现代理Exchange邮件传输方案
由于公司Exchange环境的邮件过滤的硬件设备存在单点故障又不想再花更多的费用去做这方面的投资,所以想通过Postfix工具实现一个冗余的方案. postfix是Wietse Venema在IBM的 ...
- java编写两邮件传输,JAVA邮件发送(文字+图片+附件)【源码】
介绍: 电子邮件协议 电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP.其中邮件的创建和发送只需要用到 SMTP协议,所有本文也只会涉及到SMT ...
- outlook 2010邮件传输接口错误解决一例
现象: 打开OFFICE OUTLOOK 2010时,报邮件传输接口返回未知错误,导致无法使用OUTLOOK. 故障截图: 解决:尝试用OFFICE软件自带的检测和修复功能重装OUTLOOK发现不行, ...
最新文章
- 微信小程序图表插件 echarts-for-weixin
- 最小花费(最短路变形+中南大学复试机试)
- sigmoid函数_常用的激活(激励)函数——深度学习笔记(建议收藏)
- 小米8ios图标包下载_小米互传PC端抢先下载,免流量、高速互传,支持多设备共享...
- 查看eclipse中已经安装的插件(英文版界面)
- 概念的理解 —— 电学
- 搭建etcd 3.4.15集群(详细教程,包括选举过程、数据备份和恢复)
- leetcode练习旋转数组
- LongAdder类学习笔记
- Properties 类的详细使用(十三)
- 【原创】St2-057检测工具(Apache Struts2远程代码执行高危漏洞)
- 思科二层冗余技术对比---PortChannel/StackWise/VSS/vPC
- 2019牛客暑期多校训练营(第八场)E.Explorer
- 如何修改mc基岩版服务器端口,我的世界基岩版服务器指令设置家
- Centos添加开机启动项【Systemctl方式】
- Js模拟重力场【Js动效】
- STM32-使用IIC接线的OLED显示屏
- android id 重名_android 中Xml里面的id重名问题
- stm32f4xx-I2C
- 微信小程序开发必备的八个插件