码迷,mamicode.com
首页 > Windows程序 > 详细

C# 邮件发送

时间:2017-09-08 18:04:59      阅读:357      评论:0      收藏:0      [点我收藏+]

标签:setting   2-2   命名空间   ntp   邮箱   参考   加密   man   sendemail   

1.创建控制台程序:

技术分享

2.添加一个与发送邮件相关的实体类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SendEmail
{
    /// <summary>
    /// 邮件发送实体类
    /// </summary>
    public class EmailSend
    {
        /// <summary>
        /// 邮件服务器
        /// </summary>
        public string  smtpServer { get; set; }
        /// <summary>
        /// 发件邮箱
        /// </summary>
        public string sendEmail { get; set; }
        /// <summary>
        /// 收件箱
        /// </summary>
        public string dstEmail { get; set; }
        /// <summary>
        /// 授权码
        /// </summary>
        public sbyte pwd { get; set; }
        /// <summary>
        /// 抄送邮箱
        /// </summary>
        public string ccEmail { get; set; }
        /// <summary>
        /// 密送邮箱
        /// </summary>
        public string bccEmail { get; set; }
        /// <summary>
        /// 邮件主题(标题)
        /// </summary>
        public string theme { get; set; }
        /// <summary>
        /// 邮件内容
        /// </summary>
        public string content { get; set; }
    }
}

3.添加一个配置文件App.config,将相关内容配置到里面:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <!--邮件服务器-->
        <add key="smtpServer" value=""/>
        <!--发件邮箱-->
        <add key="sendEmail"  value=""/>
        <!--收件邮箱-->
        <add key="dstEmail"  value=""/>
        <!--客户端授权码-->
        <add key="clientPwd"  value=""/>
        <!--抄送邮箱-->
        <add key="ccEmail"  value=""/>
        <!--密送邮箱-->
        <add key="bccEmail"  value=""/>
        <!--设置定时器间隔时间(秒数)-->
        <add key="internal"/>
    </appSettings>
</configuration>

4.程序入口:

引入命名空间:

using System.Net.Mail;
using System.Net;

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
using System.Net.Mail;
using System.Net;

namespace SendEmailDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建一个邮件实体对象
            EmailSend email = new EmailSend();
            //从配置文件取出相关的值并对邮件实体对象赋值

            //获取邮件服务器
            email.smtpServer = System.Configuration.ConfigurationManager.AppSettings["smtpserver"];
            //获取发件箱
            email.sendEmail = System.Configuration.ConfigurationManager.AppSettings["sendEmail"];
            //获取收件箱
            email.dstEmail = System.Configuration.ConfigurationManager.AppSettings["dstEmail"];
            //获取客户端授权码
            email.clientPwd = System.Configuration.ConfigurationManager.AppSettings["clientPwd"];
            //获取抄送邮箱
            email.ccEmail = System.Configuration.ConfigurationManager.AppSettings["ccEmail"];
            //获取密送邮箱
            email.bccEmail = System.Configuration.ConfigurationManager.AppSettings["bccEmail"];


            email.theme = "C#邮件发送测试";
            email.content = "邮件测试内容";

            string msg=SendEmail(email);
            Console.WriteLine(msg);
            Console.ReadKey();
            

        }



        public static  string SendEmail(EmailSend _mailSend)
        {
            try
            {
                MailMessage mail = new MailMessage();

                //邮件服务器客户端对象
                SmtpClient client = new SmtpClient();
                //设置邮件服务器
                client.Host = _mailSend.smtpServer;
                //设置端口
                client.Port = 25;
                //是否使用安全套接字层加密连接
                client.EnableSsl = false;
                //不使用默认凭证,注意此句必须放在 client.Credentials 的前面
                client.UseDefaultCredentials = false;
             
                client.Credentials = new NetworkCredential(_mailSend.sendEmail, _mailSend.clientPwd);

                //邮件通过网络直接发送到服务器
                client.DeliveryMethod = SmtpDeliveryMethod.Network;

                //账号信息
                mail.From = new MailAddress(_mailSend.sendEmail);

                mail.To.Clear();

                //添加收件箱
                foreach (var item in _mailSend.dstEmail.Split(;))
                {
                    if (string.IsNullOrEmpty(item))
                    {
                        continue;
                    }
                    mail.To.Add(item);
                }

                //添加抄送
                if (!string.IsNullOrEmpty(_mailSend.ccEmail))
                {
                    foreach (var item in _mailSend.ccEmail.Split(;))
                    {
                        if (string.IsNullOrEmpty(item))
                        {
                            continue;
                        }
                        mail.CC.Add(new MailAddress(item));
                    }
                }

                //添加密送
                if (!string.IsNullOrEmpty(_mailSend.bccEmail))
                {
                    foreach (var item in _mailSend.bccEmail.Split(;))
                    {
                        if (string.IsNullOrEmpty(item))
                        {
                            continue;
                        }
                        mail.Bcc.Add(new MailAddress(item));
                    }
                }

                //设置主题
                mail.Subject = _mailSend.theme;
                //设置内容
                mail.Body = _mailSend.content;
                //设置编码
                mail.SubjectEncoding = Encoding.UTF8;
               

                //发送邮件
                client.Send(mail);

                return "邮件发送成功!!";
            }
            catch (Exception ex)
            {

                return"邮件发送异常,捕获异常:"+ex.Message;
            }
        }


    }
}

 5.未将邮箱的客户端授权开启时,会出现如下异常:

技术分享

6.浏览器登录邮箱-->设置-->客户端授权密码-->点击开启-->输入验证码-->确定

技术分享

7.设置授权码

技术分享

8.设置成功,注:此授权码为客户端发送邮件所必须的

技术分享

9.再次发送邮件:

技术分享

10.浏览器登录邮箱查看:

技术分享

 

成功!!

11.官网参考地址:https://msdn.microsoft.com/zh-cn/library/system.net.mail.mailmessage(VS.80).aspx

C# 邮件发送

标签:setting   2-2   命名空间   ntp   邮箱   参考   加密   man   sendemail   

原文地址:http://www.cnblogs.com/jiangxianshen/p/7495111.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!