Asp.net 邮件传输(转)

因为项目需要,我本来做的是通过密码问题找回用户忘记的密码,结果客户要邮件自动发送的那种找回密码,还要用自己的邮件服务器。那么我怎么办?还要留个邮件服务器接口,好难做啊,让我真不知所措,我上网上查了一下午,也测试了一下午,邮件自动发送怎么做,我用了差不多4种方法了,试了又试,我是在Webconfig里配置,或是用比较流行的Jmail 。不知这算不算接口了,哎,邮件服务器配置我不会配,也没配过反正我就这样做了,呵呵,如果有做过邮件服务器配置的朋友看到我这个文章,希望能给我点提示,指点下我至于怎么换成自己的邮件服务器,又怎么配置,就请高手指点下我吧。

下面说下我总结办法:
第一种方法:

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的网络连接

XML/HTML代码
  1. <system.net>
  2. </system.net>

如下:设置stmp邮件发送的配置

XML/HTML代码
  1. //父元素:configuration(提供所有名称空间的配置)
  2. <system.net>
  3. //这里还可以加入如下元素的设置
  4. //authenticationModules:设置用来验证WEB请求的模块
  5. //connectionManagement:设置WEB服务器最大连接数
  6. //defaultProxy:设置http的代理服务器
  7. //mailSettings:配置smtp
  8. //requestCaching:控制网络请求缓存机制
  9. //settings:为System.NET配置基本网络选项
  10. //<webRequestModules>元素(网络设置):指定模块从WEB服务器请求信息。
  11. <mailSettings>
  12. //deliveryMethod设置邮件发送方式,这里是网络形式
  13. <smtp deliveryMethod="Network" from="xxx@yyy.com" >
  14. //host邮件发送服务器
  15. //userName发送邮件时,用来进行身份验证的用户名
  16. //password如下验证时的密码
  17. <network host="smtp.yyy.com" userName="xxx@yyy.com" password="zzzzzzz" />
  18. </smtp>
  19. </mailSettings>
  20. </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配置

C#代码
  1. //NetSectionGroup在上面已经介绍过了
  2. //GetSectionGroup从指定的配置文件获取system.net的配置
  3. //WebConfigurationManager.OpenWebConfiguration
  4. //打开应用程序根目录下的web.config生成System.Configuration.Configuration对象实例
  5. SmtpSection cfg = NetSectionGroup.GetSectionGroup(WebConfigurationManager.OpenWebConfiguration("~/web.config")).MailSettings.Smtp;

发送电子邮件

C#代码
  1. try{
  2. //实例化一个邮件消息对象
  3. MailMessage email = new MailMessage(cfg.From, mailto);
  4. email.IsBodyHtml = true;
  5. email.Body = "要发送的邮件内容,上面已经设置可以支持html内容,例外还可以通过指定email.BodyEncoding属性设置邮件内容的编码";
  6. email.Subject = "邮件主题,通过指定email.SubjectEncoding属性设置邮件主题的编码";
  7. //实例化smtp客服端对象,用来发送电子邮件
  8. System.Net.Mail.SmtpClient stmp = new SmtpClient(cfg.Network.Host);
  9. //设置是否需要发送是否需要身份验证,如果不需要下面的credentials是不需要的
  10. stmp.UseDefaultCredentials = true;
  11. stmp.Credentials = new System.Net.NetworkCredential(cfg.Network.UserName, cfg.Network.Password);
  12. //发送邮件
  13. stmp.Send(email);
  14. }
  15. catch (Exception ex)
  16. {

[转]: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/dragonchen/archive/2011/09/24/email.html

Asp.net 邮件传输相关推荐

  1. Asp.net 邮件传输(转)

    因为项目需要,我本来做的是通过密码问题找回用户忘记的密码,结果客户要邮件自动发送的那种找回密码,还要用自己的邮件服务器.那么我怎么办?还要留个邮件服务器接口,好难做啊,让我真不知所措,我上网上查了一下 ...

  2. c语言socket/smtp 邮件 附件,SMTP邮件传输协议发送邮件和附件 1

    在以前接触的项目中,一直都是在做网站时用到了发送mail 的功能,在asp 和.net 中都有相关的发送mail 的类, 实现起来非常简单.最近这段时间因工作需要在C++ 中使用发送mail 的功能, ...

  3. JavaMail学习笔记(一)、理解邮件传输协议(SMTP、POP3、IMAP、MIME)

    电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行传递,就必须遵循一定的规则,这些规则就是邮件传输协议.SMTP协议定了邮件客户端与SMTP服务之间,以及两台SMTP服务器之间发送邮 ...

  4. JavaMail学习之一-邮件传输协议

    协议:规定好的格式就是协议.就像http协议有请求协议和响应协议,邮件传输也分为发.收邮件的协议. 邮件协议分3种: 发邮件的:SMTP (Simple Mail Transport  Protoca ...

  5. Office365 Exchange Hybrid No.15 DNS切换及邮件传输排错

    完成混合部署以及相关后续工作后,接下来就是公网DNS切换及邮件传输测试,此部分应当只非工作时间进行(意味着要加班加班加班哈哈哈哈) 公网DNS切换,就如之前文章中说的,需要将MX记录指向Office3 ...

  6. Linux中最受欢迎的邮件传输代理(MTA)

    MTA(Mail transfer Agent) -对于服务器管理员来说,邮件传输代理是最为重要的工具.MTA的主要工作就是将电子邮件从一台主机发送到另一台主机.MTA使用SMTP(简单邮件传输协议) ...

  7. Postfix实现代理Exchange邮件传输方案

    由于公司Exchange环境的邮件过滤的硬件设备存在单点故障又不想再花更多的费用去做这方面的投资,所以想通过Postfix工具实现一个冗余的方案. postfix是Wietse Venema在IBM的 ...

  8. java编写两邮件传输,JAVA邮件发送(文字+图片+附件)【源码】

    介绍: 电子邮件协议 电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP.其中邮件的创建和发送只需要用到 SMTP协议,所有本文也只会涉及到SMT ...

  9. outlook 2010邮件传输接口错误解决一例

    现象: 打开OFFICE OUTLOOK 2010时,报邮件传输接口返回未知错误,导致无法使用OUTLOOK. 故障截图: 解决:尝试用OFFICE软件自带的检测和修复功能重装OUTLOOK发现不行, ...

最新文章

  1. 【POJ】3268 Silver Cow Party (将有向图的边反转)
  2. Google BBR拥塞控制算法背后的数学解释 | 深度
  3. python相关性分析特征过滤_特征选择-Filter过滤法后续(相关,互信息法)
  4. Teamviewer在lCentos 7中的安装
  5. windows文件 linux cr,DOS/Windows和Linux/Unix间的文件格式转换
  6. Linux 磁盘管理 二(Raid、LVM、Quota)
  7. 计算机上没有系统软件应用软件也一样能使用,2010判断题一般双击桌面上的程序图标可以打开该程序...
  8. 面试官:你是如何调用 wait() 方法的?使用 if 还是 while?别答错了!
  9. python对文件的操作
  10. 网络安全实验1——口令攻击和钓鱼攻击
  11. kettle工具使用教程
  12. PMP考试一定要大量做题吗?
  13. 好货推荐!两款免费的 Linux 桌面录制工具
  14. Java复习 day_01
  15. 浅谈机器视觉的相机,镜头选型和打光
  16. SQL Sever——远程过程调用失败(0x800706be)
  17. linux Ubuntu 安装的搜狗双拼输入法只有五笔解决办法附安装教程
  18. ORAN架构和功能划分
  19. Matplotlib学习手册A005_Figure的add_axes()方法
  20. 机器学习中对数据集进行拆分及模型训练

热门文章

  1. mqtt实例 php_php搭建MQtt协议服务
  2. middleware什么意思_middleware
  3. 停车场管理系统linux实现,基于Linux的停车场管理系统的设计与实现
  4. Lesson5 一阶自治微分方程
  5. 基于深度神经网络的大规模植物分类
  6. el-table固定列之后没有出现滚动条_一道经典的MySQL面试题,答案出现三次反转...
  7. 风险事件文本分类(达观杯Rank4)
  8. OMG!最难啃的《深度学习》圣经花书,居然新出版了视频课!
  9. python如何设置双索引_python – 设置值多索引熊猫
  10. python3.8安装pyinstaller失败_pip命令安装 pyinstaller失败解决办法