C#发送邮件
以下代码已用 .yeah 、qq 以及本人公司邮箱测试通过,可多发,可挂附件
本次测试邮件发送类,是用的winform
页面如下
窗口的后台代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace MailServer
{
public partial class MailSend : Form
{
public MailSend()
{
InitializeComponent();
} /// <summary>
/// 发送按钮 的点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSend_Click(object sender, EventArgs e)
{
string name = txtName.Text.Trim(); //输入邮件地址(发件人的)
string pwd = txtPwd.Text.Trim(); //输入的邮箱密码(发件人的)
string content = txtContent.Text.Trim(); //邮件内容
string recieve = txtRecieve.Text.Trim(); //收件人邮件地址
string title = txtTitle.Text.Trim(); //邮件标题
string attachFile = txtFileName.Text; //附件的路径
try
{
//调用接口,发送邮件
EMailUtil.SendMail(name, pwd, title, content, recieve, attachFile);
MessageBox.Show("发送成功");
}
catch (Exception)
{
MessageBox.Show("发送失败");
} } /// <summary>
/// 浏览 按钮的点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{ DialogResult result = OFD.ShowDialog(); //打开文件浏览窗口
if (result == DialogResult.OK)
txtFileName.Text = OFD.FileName; //将附件路径保存到文本框
}
}
}
接口代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail; namespace MailServer
{
public class EMailUtil
{ /// <summary>
/// 邮件发送
/// </summary>
/// <param name="userName">发件人邮箱地址</param>
/// <param name="pwd">发件人邮箱密码</param>
/// <param name="mailSubject">邮件主题</param>
/// <param name="mailBody">邮件内容</param>
/// <param name="sendMailAddress">收件人地址(以";"分隔)</param>
/// <param name="attachment">附件</param>
public static void SendMail(string userName, string pwd, string mailSubject, string mailBody, string sendMailAddress, string attachment)
{
MailMessage m = new MailMessage();
string[] arrTo = sendMailAddress.Split(';'); //将以分号分隔的收件人地址拆开
foreach (string t in arrTo)
{
if (!string.IsNullOrEmpty(t))
m.To.Add(new MailAddress(t)); //添加收件人
}
m.From = new MailAddress(userName); //发件人
m.Subject = mailSubject; //邮件标题
m.Body = mailBody; //邮件内容
m.IsBodyHtml = true; m.SubjectEncoding = Encoding.GetEncoding("GB2312");
m.BodyEncoding = Encoding.GetEncoding("GB2312");
if (attachment.Length > )
{
m.Attachments.Add(new Attachment(attachment)); //添加附件
}
SmtpClient sm = new SmtpClient();
sm.Credentials = new System.Net.NetworkCredential(userName, pwd);
sm.DeliveryMethod = SmtpDeliveryMethod.Network;
sm.Host = "smtp.yeah.net"; //此处是邮件的服务器主机名,如果用163邮箱发送,就写smtp.163.com;126邮箱则写smtp.126.com
sm.Send(m);
}
}
}
此方法可以正常的发送邮件,
但是有一个尚未解决的问题。就是接口中,最后调用的Send方法没有返回值,这样不容易判断邮件的发送状态。
望大神们有知道的给个方案~在此多谢~
C#发送邮件的更多相关文章
- 利用SQLServer数据库发送邮件
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 这个应用案例很多,一般都是预警,比如异常连接的时候,或者数据库报错的时候.等等,,, 先 ...
- C# 多种方式发送邮件(附帮助类)
因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...
- JavaMail发送邮件
发送邮件包含的内容有: from字段 --用于指明发件人 to字段 --用于指明收件人 subject字段 --用于说明邮件主题 cc字段 -- 抄送,将邮件发送给收件人的同时抄 ...
- 技术笔记:Indy控件发送邮件
工作中有个需求需要发送邮件,因为使用的delphi6,所以自然就选择了indy组件,想想这事挺简单的.实现的过程倒是简单,看着Indy的demo很快就完了,毕竟也不是很复杂的功能. 功能要求: 1.压 ...
- mono中发送邮件并保存本次收件人的地址
在ios端mono开发中,发送邮件可以选择调用ios原生email程序.有两种方式实现这种功能,一是程序跳转到ipad中email程序,另外一种是将发送邮件的界面在自己应用里弹出. 首先第一种方式的代 ...
- Azure 上通过 SendGrid 发送邮件
SendGrid 是什么? SendGrid 是架构在云端的电子邮件服务,它能提供基于事务的可靠的电子邮件传递. 并且具有可扩充性和实时分析的能力.常见的用例有: 自动回复用户的邮件 定期发送信息给用 ...
- 使用nodemailer发送邮件
今天闲来无事,一时兴起看了下如果使用javascript来发送邮件.经过调研发现,nodeJs可以实现这个功能. 具体的步骤如下: 1.安装依赖 npm install nodemailer -g ( ...
- ASP.NET MVC 发送邮件(异步)
最近写邮件发送搞死人了,最后的结果,真是醉了,现整理如下: 网上一搜一大把,到处都是.NET发送邮件的方法,我这里也大同小异的写了一个. 准备一个MailHelper.cs通用类,如下所示: 重要的命 ...
- MVC5发送邮件注册
#region 发送邮件 //填写电子邮件地址,和显示名称 System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress(&qu ...
- ASP.NET用QQ,网易发送邮件以及添加附件
教程:ASP.NET用QQ,网易发送邮件以及添加附件 这是我用QQ邮箱出现的异常: 命令顺序不正确. 服务器响应为:Error: need EHLO and AUTH first !无法从传输连接中读 ...
随机推荐
- GetStoredProcCommand和GetSqlStringCommand的区别
原文:http://www.ithao123.cn/content-4004602.html http://hi.baidu.com/847270942/blog/item/c224dd557ff74 ...
- Get Intensity along a line based on OpenCV
The interpolate function is used to get intensity of a point which is not on exactly a pixel. The co ...
- vagrant初始登录失败的一般性解决方案
如果是下载的box文件,vagrant box add和init之后启动,可能出现长时间无法通过vagrant ssh登陆的问题 ==> localvm2: Importing base box ...
- 《SSM框架搭建》一.构建maven web项目
一.创建maven工程File-New-other-Maven Project 二.设置项目工作空间,取消默认勾选,手动设置 三.选择internal,输入web,选择maven.archetypes ...
- scrum.4
1.准备看板. 形式参考图4. 2.任务认领,并把认领人标注在看板上的任务标签上. 先由个人主动领任务,PM根据具体情况进行任务的平衡. 然后每个人都着手实现自己的任务. 3.为了团队合作愉快进展顺利 ...
- 关于adb shell getprop相关
adb shell : getprop 查看机器的全部信息参数 getprop ro.serialno 查看机器的序列号 getprop ro.carrier 查看机器的CID号 getprop ro ...
- linux 学习8 权限管理
第八章 权限管理 8.1 ACL权限 8.2 文件特殊权限 8.3 文件系统属性chattr权限 8.4 系统命令sudo权限 8.1 ACL权限 ACL权限简介与开启 查看与设定ACL权限 最大有效 ...
- Windows 下针对python脚本做一个简单的进程保护
前提: 大家运行的脚本程序经常会碰到系统异常关闭.或被其他用户错杀的情况.这样就需要一个进程保护的工具. 本文结合windows 的计划任务,实现一个简单的进程保护的功能. 利用py2exe生产 ex ...
- 图像上传OSS的BUG
今天遇到了一个流上传BUG. 图像经过压缩后传到阿里OSS上后无法显示,下载后发现图像大小为0KB. 调试发现上传的时候发现处理后的流大小正确. 最后发现是流经过图像处理后没有复位. 使用res.Se ...
- Java中的值传递和引用传递
这几天一直再纠结这个问题,今天看了这篇文章有点思路了,这跟C++里函数参数为引用.指针还是有很大区别. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里 ...