老话题之C#写邮件发送
唉!近来特么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#写邮件发送的更多相关文章
- C# 邮件发送遇到的错误
记录写邮件发送功能遇到的一些错误 1.System.Net.Mail.SmtpException:“Transaction failed. The server response was: DT:SP ...
- Python写自己主动化之邮件发送(匿名)
为了可以实现邮件发送功能.首先.我们须要了解一下邮件的发送过程是什么样子的,此处不再具体说明,请大家自行搜索或查看p=438">http://www.sogouqa.com/?p=43 ...
- IntelliJ IDEA 2017版 spring-boot 2.0.3 邮件发送搭建,概念梳理 (一)
邮件发送功能总结 第一部分 背景 一.使用场景 (1)注册验证 注册各大网站,通常需要输入邮件地址,在注册成功后,会发送一封邮箱验证的邮件,点击确认,证明这个邮箱是用户自己的 ...
- [RHEL] RHEL7.0 下 Postfix + Dovecot 实现邮件发送
RHEL7.0 下 Postfix + Dovecot 实现邮件发送 一.前言 大家都对邮件服务(mail service)很感兴趣嘛.我在自己 博客站 预言了自己会实战一次,访问量一天到十几(毕竟平 ...
- J2EE 邮件发送那些事儿
距离自己写的关于java邮件发送的第一篇博客已经有很长一段时间了,现在回过头看看.虽然代码质量方面有待提高,整体结构也不怎样,但是基本思路和过程还是比较纯的.现在有空写写J2EE中邮件发送的开发,实际 ...
- Java邮件发送与接收原理
一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...
- .Net(C#)最简单的邮件发送案例
一.序言 刚开始接触邮件发送功能的时候,在网上找的资料都挺复杂的!对于新手入门有点难(至少对于本人来说,第一次接触的时候确实不容易).这里就写一段简单的邮箱发送代码,备忘,也给新手一个参考(相关类的字 ...
- Jenkins邮件配置,实现邮件发送策略(可实现每个Job对应不同的发送邮箱)
前言: 首先,要有一个用来发送的邮箱,首选网易!参考:http://www.cnblogs.com/EasonJim/p/6051636.html,这里我注册了网易的免费企业邮箱. 并且我新建没多个邮 ...
- python SMTP邮件发送(转载)
Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...
随机推荐
- uva 110 Meta-Loopless Sorts 用程序写程序 有点复杂的回溯水题
题目要求写一个直接用比较排序的pascal程序,挺有趣的一题. 我看题目数据范围就到8,本来以为贪个小便宜,用switch输出. 然后发现比较次数是阶乘级别的,8的阶乘也是挺大的,恐怕会交不上去. 于 ...
- Codevs 5914 [SXOI2016]最大值
70分算法+30分打表 #include<ctime> #include<cstdio> #include<cstdlib> #include<algorit ...
- Android 获取当前应用的版本号和当前系统的版本号
1.获取当前程序版本名 我们可以在AndroidManifest.xml中设置程序的版本号等,如android:versionName="1.0",那如果想在代码中获取这个版本号呢 ...
- mybatis的一对多,多对一,以及多对对的配置和使用
1.本文章是无意中看见易百教程的Mybatis教程才注意到这个问题,平时都仅仅是在用CRUD,忽略了这方面的问题,真实十分羞愧 2.首先我们开始对mybatis的一对多的探究 根据这个应用场景 ...
- QQ空间的文艺打开方法
QQ空间被限制?打不开? 看看这里 第一种:http://user.qzone.qq.com/627911903 第二种:http://627911903.qzone.qq.com 第三种:http: ...
- Hadoop伪分布安装详解(二)
目录: 1.修改主机名和用户名 2.配置静态IP地址 3.配置SSH无密码连接 4.安装JDK1.7 5.配置Hadoop 6.安装Mysql 7.安装Hive 8.安装Hbase 9.安装Sqoop ...
- HDU3535——AreYouBusy
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3535 题目意思:给出两个数n,T,分别表示有n个任务集合,T的总时间,对于每个任务集合有两个属性m和t ...
- python基础-第五篇-5.3装饰器
小白发呆的看着窗外,同事们陆陆续续的地来到公司,想起算法,小白就飘飘然了.突然后面传来一声呼唤,原来是小刘! 小刘:不好意思啊!堵车了,就来晚了点,不耽误你的时间,咱们就开启的今天的培训内容吧! 小白 ...
- git 删除所有提交下的某个文件
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch upload/*' --prune-empty - ...
- MySQL行(记录)的详细操作
一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ...