zoukankan      html  css  js  c++  java
  • C# 发送邮件,MimeMessage 配置

    思路    

     发送邮件一般得有一个发送的账户信息,我理解的就是个载体。其次发送内容,最后目标人群。

    1.邮箱配置SMTP

       登录邮箱---设置---账户设置---开启SMTP服务(记住授权码) 至于更详细的教程百度搜索

    2.下面是发送的方法,这几个参数啥意思

     /// <summary>
            /// 同步发送邮件
            /// </summary>
            /// <param name="host">主机--QQ邮箱默认smtp.qq.com</param>
            /// <param name="port">端口--QQ邮箱默认465</param>
            /// <param name="account">账号 --邮箱地址发件人</param>
            /// <param name="password">密码 --第一步获取的授权码</param>
            /// <param name="message">邮件模型</param>
            /// <returns></returns>
            public static Exception Send(string host, int port, string account, string password, MimeMessage message)
            {
                try
                {
                    using (var client = new SmtpClient())
                    {
                        client.Timeout = 5000;
                        client.Connect(host, port, true);
                        client.Authenticate(account, password);
    
                        client.Send(message);
    
                        client.Disconnect(true);
                    }
    
                    return null;
                }
                catch (Exception e)
                {
                    return e;
                }
            }
    MimeMessage  的配置

            public async Task  Emailadd (Guid? id, ERPMarketingEmail Email, List<ERPMarketingCustomer> customlist, AppSettings appSettingService, Guid UserID)
            {
                using (var scope = _serviceScopeFactory.CreateScope())
                {
                    var dbContext = scope.ServiceProvider.GetService<UnitemillManageDbContext>();
    
                    MimeMessage message = new MimeMessage();//实例化对象
                    message.From.Add(new MailboxAddress(Encoding.UTF8, appSettingService.DisplayName, appSettingService.From));//配置邮件的显示名称和发送账户
                    if (Email != null)
                    {
    
                        message.Subject = Email.Title;//邮件的标题
                        var bodyBuilder = new BodyBuilder();
                        bodyBuilder.HtmlBody = Email.Text;
                        message.Body = bodyBuilder.ToMessageBody();//这是邮件的内容,通过BodyBuilder将text文本转换成HTML的body,并且赋值给body
                    }
                    if (customlist.Count > 0)
                    {
                        foreach (var oneCustom in customlist)
                        {
                            message.Bcc.Clear();
                            message.To.Clear();
                            if (appSettingService.IsBCC)//这个位置是验证接收客户的邮箱是不是隐匿发送(不确定往to里加就行)
                            {
                                message.Bcc.Add(new MailboxAddress(oneCustom.Email));
     }
    else { message.To.Add(new MailboxAddress(oneCustom.Email));//message.to 可以继续添加,我这里是考虑到服务器的压力所以一个客户发一次 } int r = new Random().Next(10, 45); System.Threading.Thread.Sleep(r * 1000); Email.CreateDate = DateTime.Now; Email.CreateUserId = UserID; var ex = SMTPHelper.Send(appSettingService.Host, appSettingService.Port, appSettingService.UserName, appSettingService.Password, message);
    //调用上面的方法执行发送操作,发送完成记得数据库加一行记录啊如下
    if (ex == null) { 成功,添加日志 } else { 失败,添加日志 } } } } }
    
    
    
  • 相关阅读:
    JDBC原理及常见错误分析
    response,session,cookie
    Activity LifeCycle (安卓应用的运行机制)
    简单的接口取数据渲染到图表
    图表里面双重下拉框进行判断
    用js方式取得接口里面json数据的key和value值
    一个div多个图表共用一个图例
    一个页面多图表展示(四个div的方式)
    vue组件之子组件和父组件
    根据判断对颜色进行改变
  • 原文地址:https://www.cnblogs.com/hanke123/p/13718308.html
Copyright © 2011-2022 走看看