老话题之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 ...
随机推荐
- vue+node+mongoDB火车票H5(七)-- nodejs 爬12306查票接口
菜鸟一枚,业余一直想做个火车票查票的H5,前端页面什么的已经写好了,node+mongoDB 也写了一个车站的接口,但 接下来的爬12306获取车次信息数据一直卡住,网上的爬12306的大部分是pyt ...
- git--简单操作
Git简介 一. 安装 下载地址: https://git-scm.com/downloads: https://pan.baidu.com/s/1kU5OCOB#list/path=%2F ...
- gdb常见命令(未完,待续)
// 编译文件时,带参-g > gcc -g test.c // 进入gdb调试界面 > gdb a.out 或者 > gdb > file a.out // 查看文件内容 & ...
- Ubuntu 14.04 安装jdk,tomcat
分类: 碎知识(8) 版权声明:本文为博主原创文章,未经博主允许不得转载. 写在前面: 装的时候,参考了许多网上的资料,有很多人写的有些简单了,人家那边版本稍微一更新,像我这样的小白就找不到东南西 ...
- POJ1128 Frame Stacking(拓扑排序)
题目链接:http://poj.org/problem?id=1128 题意:给你一个平面,里面有些矩形(由字母围成),这些矩形互相有覆盖关系,请从求出最底层的矩形到最上层的矩形的序列,如果存在多种序 ...
- Android中的 style 和 theme
通过设置 view 控件的属性,达到设置android UI的目的,如果某些 属性值复用率很高,可以考虑将属性单独声明在 style中,这样就可以达到复用的效果. 一.style Style 概念:A ...
- Storm-源码分析-EventManager (backtype.storm.event)
Protocol and DataType 大体结构, 定义protocol EventManager, 其实就是定义interface 函数event-manager, 主要做2件事 1. 启动ev ...
- element自定义表单验证
element-ui框架下修改密码弹窗进行表单验证. 除了基础校验,密码不为空,长度不小于6字符,需求中还需校验密码由数字和字母组合. 处理代码如下: <el-dialog :visible.s ...
- print文档
文档 def print(self, *args, sep=' ', end='\n', file=None): # known special case of print ""& ...
- Oracle 学习笔记 12 -- 序列、索引、同义词
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/Topyuluo/article/details/24232449 数据库的对象包含:表.视图.序列. ...