发送邮件的几种方法(C#发邮件 和 js前台实现都有)C#后台自动发邮件 js发邮件
1.后台自动发邮件
1)首先设置邮件参数,这里写在configuration里面
<appSettings>
<add key="SMTP" value="smtp.office365.com" />
<add key="Port" value="" />
<add key="username" value="xxx@microsoft.com" />
<add key="password" value="#EDC4rfv" />
<add key="SmtpDeliveryMethod" value="Network" />
<add key="EnableSsl" value="true" />
<add key="IsBodyHtml" value="false" />
</appSettings>
示例使用的是微软邮箱,其他邮件参数可以自行百度
2)在后台代码中添加如下语句
try
{
string date = DateTime.Now.ToString("R").Split(',')[];
date = date.Split(' ')[] + '-' + date.Split(' ')[] + '-' + date.Split(' ')[]; string mailto = "xxx@microsoft.com"; MailMessage mail = new MailMessage(); mail.From = new MailAddress(ConfigurationManager.AppSettings["username"]);//
mail.To.Add(mailto);
mail.Subject = "Subject " + DateTime.Now.ToLongDateString().ToString(); ;
mail.Body = "Test Email";
mail.IsBodyHtml = bool.Parse(ConfigurationManager.AppSettings["IsBodyHtml"]);//mail body是否为html
string username = ConfigurationManager.AppSettings["username"];//
string password = ConfigurationManager.AppSettings["password"];// using (SmtpClient SmtpServer = new SmtpClient(ConfigurationManager.AppSettings["SMTP"]))//
{
SmtpServer.Port = int.Parse(ConfigurationManager.AppSettings["Port"]);//
SmtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
SmtpServer.Credentials = new System.Net.NetworkCredential(username, password);
SmtpServer.EnableSsl = bool.Parse(ConfigurationManager.AppSettings["EnableSsl"]);//
SmtpServer.Send(mail);
} }
catch (Exception ex)
{
Console.Write("Send Fail");
Console.Write(ex.Message);
}
这里需要引用 System.Configuration;(第一步中在config里面设置的参数读取)和System.Net.Mail;
程序运行后会直接发送邮件到mailto不需要本地安装outlook
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2.调用本地outlook打开邮件并注入邮件内容(在发布到服务器上之后并不怎么好用,微软好像并不支持将outlook在无人监控的服务器上automation的做法)
在NuGet 包中安装 Microsoft.Office.Interop.Outlook 并using Outlook = Microsoft.Office.Interop.Outlook;
Outlook.Application olApp = new Outlook.Application();
Outlook.MailItem mailItem = (Outlook.MailItem)olApp.CreateItem(Outlook.OlItemType.olMailItem);
//set email to , email Subject , email CC
mailItem.To = "xxx@microsoft.com";
// mailItem.CC = "";
mailItem.Subject = "C#_SendEmail_Test";
mailItem.Attachments.Add(@"D:\C#_Learn\Test.txt");//附件
//set the body
mailItem.BodyFormat = Outlook.OlBodyFormat.olFormatRichText;
string content = @"<html></html>"; mailItem.HTMLBody = content;//这里发送的是html,其余格式也可以
//mailItem.Display(mailItem);//不直接发送将这行取消注释
//((Outlook._MailItem)mailItem).Send();//直接发送将这行取消注释
不直接发送 outlook会弹出一个邮件以供编辑 手动发送 如下图
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3.使用js调用本地的outlook没有深入研究,只知道可以打开并注入内容 不知道可不可以直接发送,以下是使用js打开outlook并注入内容的方法(参考http://www.cnblogs.com/LiveWithIt/p/5937049.html)
<a href="mailto:xxx@xxx.com?subject=Subject&cc=CC&body=Body">send mail</a>
在第一个参数(mailto)后面添加?,其他参数之间用&连接。
mailto支持以下几种参数:
局部效果图如下所示:
根据参考链接提供一个示例:
html:
<ul class="email">
<li><input type="text" name="name" placeholder="Name"></li>
<li><input type="text" name="email" placeholder="Email Address"></li>
<li><input type="text" name="number" placeholder="Phone Number"></li>
<li class="message"><textarea name="message" placeholder="Message"></textarea> </li>
<button class="btn btn-define" onclick="sendEmail()">Submit</button>
<a href="mailto" id="send"></a>
</ul>
js:
function sendEmail(){
var name=$("[name='name']").val(),
email=$("[name='email']").val(),
number=$("[name='number']").val(),
message=$("[name='message']").val(),
body="My Name is: "+name+"%0a%0d"
+"My Email Address is: "+email+"%0a%0d"
+"My Phone Number is: "+number+"%0a%0d"
+"Message:"+"%0a%0d"+message;
$("#send").attr("href","mailto:mamengyi1121@163.com?body="+body);
document.getElementById("send").click();
}
使用js来填充emailbody 是否可以兼容html格式在这里不讨论,但是经过本人测试在我的电脑上不可以,%0a%0d是UTL编码用来实现换行 取代<br />
效果图如下:
(听说nodejs可以实现)先去研究 后续再写
发送邮件的几种方法(C#发邮件 和 js前台实现都有)C#后台自动发邮件 js发邮件的更多相关文章
- 使用PHP发送邮件的两种方法
使用PHP发送邮件的两种方法 May242013 作者:Jerry Bendy 发布:2013-05-24 22:25 分类:PHP 阅读:2,107 views 抢沙发 今天 ...
- 【转】【Asp.Net】Asp.net发送邮件的两种方法小结
这几天看了一下Asp.net发送邮件方面的东西,记得之前的IIS6上有SMTP服务器,可以直接利用这个进行邮件发送,现在的开发环境是Windows 7,找了半天没有找到,到网络上查了才知道原来wind ...
- PHP中发送邮件的几种方法总结
1. 使用 mail() 函数 没什么好讲的,就是使用系统自带的smtp系统来发送,一般是使用sendmail来发.这个按照各个系统不同而定.使用参考手册. 2. 使用管道的形式 昨天刚测试成功,使用 ...
- 修改PYTHONPATH的一种方法(在Window平台和Ubuntu下都有效)
1.显示PYTHONPATH 2.修改PYTHONPATH 通过PYTHONPATH 中的任何 .pth 文件来添加pythonpath.比如我想添加/home/aa这个路径到pythonpath里, ...
- JAVA之线程同步的三种方法
最近接触到一个图片加载的项目,其中有声明到的线程池等资源需要在系统中线程共享,所以就去研究了一下线程同步的知识,总结了三种常用的线程同步的方法,特来与大家分享一下.这三种方法分别是:synchroni ...
- AJAX实现跨域的三种方法
由于在工作中需要使用AJAX请求其他域名下的请求,但是会出现拒绝访问的情况,这是因为基于安全的考虑,AJAX只能访问本地的资源,而不能跨域访问. 比如说你的网站域名是aaa.com,想要通过AJAX请 ...
- php数字补零的两种方法
在php中有两个函数——至少有两个是否有其他的我还不知道,能够实现数字补零,str_pad(),sprintf()详细如下 str_pad顾名思义这个函数是针对字符串来说的这个可以对指定的字符串填补任 ...
- input上传图片(file),预览图片的两种方法。blob与base64编码
上传图片时一般都需要预览,我一般用这两种方法来实现.base64编码可以直接上传到后台,后台解析下,得到的文件就会比较小了,省去了压缩图片这一步了. //获取对象input file 的图片地址,放进 ...
- js----点击事件三种方法
在javascript中,可以为某个元素指定事件,指定的方式有以下三种: 1.在html中,使用onclick属性 2.在javascript中,使用onclick属性 (1)注意函数名没有双引号. ...
随机推荐
- 加拿大Assignment写作如何靠第一句话来吸睛?
最近有留学加拿大的同学咨询我们如何写好assignment的首句,关于话题背景的引入,如何才能自然精妙,让老师对后文充满期待.小编用一句话总结今天的策略:陈述一个跟话题直接相关的事实.“直接相关”,保 ...
- python机器学习基本概念快速入门
//2019.08.01机器学习基础入门1-21.半监督学习的数据特征在于其数据集一部分带有一定的"标记"和或者"答案",而另一部分数据没有特定的标记,而更常见 ...
- TeX 常用命令记录
常用: $a_{i}^{2}$ a_{i}^{2} $\sqrt x$ $\sqrt[n] x$ \sqrt[n] x $\frac{1+2}{3+4}$ 重音符号: $\hat ...
- extract()和extact_first()的区别
extract()和extact_first()都是提取Selector的data部分.但现在你要先知道什么是Selector. Selector是选择器的意思.具体定义我不知道,但通过下面的例子,你 ...
- R 《回归分析与线性统计模型》page140,5.1
rm(list = ls()) library(car) library(MASS) library(openxlsx) A = read.xlsx("data140.xlsx") ...
- Tcp 3次握手 4次挥手
Tcp 3次握手 4次挥手 标签(空格分隔): Java基础 报文介绍: SYN(synchronous建立联机) ACK(acknowledgement 确认) FIN(finish结束) PSH( ...
- RDD 可视化 —— RDDOperationScope.withScope
最近在看各种博客,学习 spark 源代码. 网上对源代码的分析基本都是基于 0.7, 0.8, 1.0 的代码,而现在的发行版已经是 1.5 了.所以有些代码不大对的上.比如函数 RDD.map() ...
- 《Airbnb架构要点分享》阅读笔记
Airbnb成立于2008年8月,总部位于加利福尼亚州旧金山市.Airbnb是一个值得信赖的社区型市场,在这里人们可以通过网站.手机或平板电脑发布.发掘和预订世界各地的独特房源,其业务已经覆盖190个 ...
- Spark的任务提交和执行流程概述
1.概述 为了更好地理解调度,我们先看一下集群模式的Spark程序运行架构图,如上所示: 2.Spark中的基本概念 1.Application:表示你的程序 2.Driver:表示main函数,创建 ...
- python 输出99乘法表
for i in range(1,10): for j in range(1,i+1): print("%s*%s=%2s"%(i,j,i*j),end=" " ...