唉!近来特么QQ邮件也犯二,突然间以前写的代码邮件发不出去,各种报错,无奈之下,换成了@163.com,可是报错依然,该开通(POP3/SMTP/IMAP)的都开通了!我勒了个草,像是在玩哥一样,还好哥不以为然,不然还真不知道和谁过不去。

闲话少叙,言归正传,本次以@163.com为例,来给自己写一份记录事迹,各大邮件商可谓煞费苦心,想收你钱那,唉!从注册开始吧!

当你注册一个@163.com邮箱时,要开通POP3/SMTP/IMAP就必须设置【授权码】,但有了这授权码这类设置得授权了才能用,但是为了能让C#程序通过163服务器发出邮件,那你还得把你的邮箱密码改成【授权码】一样,不然就发不出去(原因本人不明,知道的同学请赐教,不胜感激,但经过结论试验得出!)!

接下来就是上代码

先看我的配置文件

    <add key="sendEmail" value="13066802098@163.com,lei12345678,smtp.163.com,测试邮件"/>
<add key="sendContext" value="您好!欢迎来到XXX网,您的注册验证码是{0},有效期10分钟,过期无效!谢谢"/>
</appSettings>

然后上后台代码

        /// <summary>
/// 发送邮件的方法
/// </summary>
/// <param name="context">邮件内容中要替换的变化部份</param>
/// <param name="toEmail">发送给XXXX的Email(也叫接收者的邮件地址)</param>
/// <returns></returns>
public static string SendEmail(string context, string toEmail)
{
//if (mailToArray == null || mailToArray.Length == 0) return "发送失败,收件人为空!";
//"sender,pwd,serverHost(服务器地址smtp.qq.com),Port(端口号),subject(主题)"
string emailSetting = ConfigurationManager.AppSettings["sendEmail"].ToString();
string settingContent = ConfigurationManager.AppSettings["sendContext"].ToString(); // 格式为:"您好!您……………………{0}……"
context = string.Format(settingContent, context); // 格式化上面的要变{0}的内容 如果发的是不变的内容就不要该代码
if (string.IsNullOrEmpty(emailSetting)) return "配置错误";
string[] arr = emailSetting.Split(',');
if (arr.Length != ) return "配置错误";
string sender = arr[]; // 发送人邮件地址
string password = arr[]; // 发送人邮件PWD
string Server = arr[]; // 发送人邮件服务器地址
//int Port=0;
//if (!int.TryParse(arr[3], out Port)) return "邮件服务器端口号配置错误"; // 发送人邮件服务器地址端口号可以不写
string Subject = arr[]; // 邮件主题
//使用指定的邮件地址初始化MailAddress实例
MailAddress maddr = new MailAddress(sender,"雷先生"); // 这里第二个参数可以写成你想显示的!
//初始化MailMessage实例
MailMessage myMail = new MailMessage();
//向收件人地址集合添加邮件地址
//if (mailToArray != null)
//{
// for (int i = 0; i < mailToArray.Length; i++)
// {
// myMail.To.Add(mailToArray[i].ToString());
// }
//}
myMail.To.Add(toEmail); // 如果用批量 注释这一行,用上面的for添加邮件地址
//向抄送收件人地址集合添加邮件地址
//if (mailCcArray != null)
//{
// for (int i = 0; i < mailCcArray.Length; i++)
// {
// myMail.CC.Add(mailCcArray[i].ToString());
// }
//}
myMail.CC.Add(toEmail); // 如果用批量 注释这一行,用上面的for添加抄送邮件地址
//发件人地址
myMail.From = maddr;
//电子邮件的标题
myMail.Subject = Subject;
//电子邮件的主题内容使用的编码
myMail.SubjectEncoding = Encoding.UTF8;
//电子邮件正文
myMail.Body = context;
//电子邮件正文的编码
myMail.BodyEncoding = Encoding.Default;
myMail.Priority = MailPriority.High;
myMail.IsBodyHtml = true;
//在有附件的情况下添加附件
// try
// {
// if (attachmentsPath != null && attachmentsPath.Length > 0)
// {
// Attachment attachFile = null;
// foreach (string path in attachmentsPath)
// {
// attachFile = new Attachment(path);
// myMail.Attachments.Add(attachFile);
// }
// }
//}
//catch (Exception err)
//{
// throw new Exception("在添加附件时有错误:" + err);
//}
SmtpClient smtp = new SmtpClient();
//指定发件人的邮件地址和密码以验证发件人身份
smtp.Credentials = new NetworkCredential(sender, password);
//smtp.UseDefaultCredentials = true;这句不要,否则发不出,一定要注意!!!!!!!!!!!!!!!!!!!!!!!!!
smtp.EnableSsl = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //设置SMTP邮件服务器
smtp.Host = Server;
// smtp.EnableSsl = true;
//smtp.Port = 587;
try
{
//将邮件发送到SMTP邮件服务器
smtp.Send(myMail);
return "成功";
}
catch (System.Net.Mail.SmtpException ex)
{
return "失败";
} }

KO,就这样,可以根据需要改动!

老话题之C#写邮件发送的更多相关文章

  1. C# 邮件发送遇到的错误

    记录写邮件发送功能遇到的一些错误 1.System.Net.Mail.SmtpException:“Transaction failed. The server response was: DT:SP ...

  2. Python写自己主动化之邮件发送(匿名)

    为了可以实现邮件发送功能.首先.我们须要了解一下邮件的发送过程是什么样子的,此处不再具体说明,请大家自行搜索或查看p=438">http://www.sogouqa.com/?p=43 ...

  3. IntelliJ IDEA 2017版 spring-boot 2.0.3 邮件发送搭建,概念梳理 (一)

    邮件发送功能总结        第一部分 背景   一.使用场景 (1)注册验证    注册各大网站,通常需要输入邮件地址,在注册成功后,会发送一封邮箱验证的邮件,点击确认,证明这个邮箱是用户自己的 ...

  4. [RHEL] RHEL7.0 下 Postfix + Dovecot 实现邮件发送

    RHEL7.0 下 Postfix + Dovecot 实现邮件发送 一.前言 大家都对邮件服务(mail service)很感兴趣嘛.我在自己 博客站 预言了自己会实战一次,访问量一天到十几(毕竟平 ...

  5. J2EE 邮件发送那些事儿

    距离自己写的关于java邮件发送的第一篇博客已经有很长一段时间了,现在回过头看看.虽然代码质量方面有待提高,整体结构也不怎样,但是基本思路和过程还是比较纯的.现在有空写写J2EE中邮件发送的开发,实际 ...

  6. Java邮件发送与接收原理

    一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...

  7. .Net(C#)最简单的邮件发送案例

    一.序言 刚开始接触邮件发送功能的时候,在网上找的资料都挺复杂的!对于新手入门有点难(至少对于本人来说,第一次接触的时候确实不容易).这里就写一段简单的邮箱发送代码,备忘,也给新手一个参考(相关类的字 ...

  8. Jenkins邮件配置,实现邮件发送策略(可实现每个Job对应不同的发送邮箱)

    前言: 首先,要有一个用来发送的邮箱,首选网易!参考:http://www.cnblogs.com/EasonJim/p/6051636.html,这里我注册了网易的免费企业邮箱. 并且我新建没多个邮 ...

  9. python SMTP邮件发送(转载)

    Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...

随机推荐

  1. LeetCode 笔记系列八 Longest Valid Parentheses [lich你又想多了]

    题目:Given a string containing just the characters '(' and ')', find the length of the longest valid ( ...

  2. ionic 移动开发性能调优-去除动画

    <ion-refresher></ion-refresher> ion-refresher指令有以下可选的属性: on-refresh - 当用户向下拉动足够的距离并松开时,执 ...

  3. 英语知识(与字面意思 相反的) Corner office

    Corner office 角落办公室是一种身份 角落办公室,即处于公司最佳位置的高级办公室,通常指总裁或总经理办公室.喻某人在公司或单位里的最高职务或在社会上与众不同的身份地位. 这里的角落是指方形 ...

  4. Servlet------>jsp输出JavaBean

    JavaBean是遵循特殊写法的java类 它通常具有如下特点: 1.这个java类必须具有一个无参的构造函数 2.属性必须私有化 3.私有化必须通过public类暴露给其他程序,而且方法的命名必须遵 ...

  5. tomcat------->简单配置

    主机名:www.snowing.com 域名:snowing.com http://主机+服务器端口号/path(web应用)/xxx.html 例: http://localhost:8080/it ...

  6. Efficient data transfer through zero copy

    Efficient data transfer through zero copy https://www.ibm.com/developerworks/library/j-zerocopy/ Eff ...

  7. ELK basic---http://udn.yyuap.com/doc/logstash-best-practice-cn/filter/grok.html

    http://blog.csdn.net/lgnlgn/article/details/8053626 elasticsearch学习入门 input {stdin{}}filter { grok { ...

  8. sigmoid & softmax、cross-entropy、relu

    sigmoid函数由于其自身特点,容易造成几个问题 1.当sigmoid在输出层时容易造成loss较大时学习速度慢的情况(或者说是代价函数学习速度衰退问题) 原因:神经网络的学习方式是通过求代价函数对 ...

  9. Pycharm配置同步服务器

    一.使用场景 我们一般需要将代码放到服务器上运行,但如果等我们将项目全部开发好之后再上传到服务器,而且每次在开发阶段需要经过多次修改,每修改一次,都手动上传一次,这样就太麻烦了,有没有一种方法可以达到 ...

  10. Linux touch命令

    touch命令不常用,一般用于更改文件时间戳,或创建一个空文件 命令选项 -a:只更改访问时间 -c:--no-create 不创建任何文件 -d:--date=字符串 使用指定字符串表示时间而非当前 ...