`
shirlly
  • 浏览: 1623934 次
  • 性别: Icon_minigender_2
  • 来自: 福州
社区版块
存档分类
最新评论

.net (c#)实现发送外部邮件的实例

阅读更多
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net.Mail;

public partial class testSendMail : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string strFrom = "xiaoxueli707325@126.com";
        string strTo = "shirlly.liao@163.com";
        string strSubject = "webtest";
        string strBody = "测试";
        System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(strFrom, strTo, strSubject, strBody);
        message.BodyEncoding = System.Text.Encoding.UTF8;
        message.IsBodyHtml = true;

        SendSMTPEMail("smtp.126.com", "xiaoxueli707325@126.com", "111111", message);

    }
    public void SendSMTPEMail(string strSmtpServer, string strFrom, string strFromPass, MailMessage message)
    {
        try
        {
            SmtpClient client = new SmtpClient(strSmtpServer);
            client.UseDefaultCredentials = true;
            client.Credentials = new System.Net.NetworkCredential(strFrom, strFromPass);
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            
            client.Send(message);
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }
}



//发送邮件的通用方法整理
 public void SendEmail(string subject, string body, params string[] tos)
        {
            string host = _commonAppService.GetSettingValue("Common_EmailHost");
            string fromName = _commonAppService.GetSettingValue("Common_EmailFromName");
            string from = _commonAppService.GetSettingValue("Common_NoreplyEmailUserName");
            string password = _commonAppService.GetSettingValue("Common_NoreplyEmailPassword");

            MailMessage message = new MailMessage();
            message.From = new MailAddress(from, fromName);
            foreach (var to in tos)
            {
                message.To.Add(to);
            }
            message.Subject = subject;
            message.Body = body;
            message.IsBodyHtml = true;

            SmtpClient smtpClient = new SmtpClient();
            smtpClient.UseDefaultCredentials = true;
            smtpClient.Credentials = new NetworkCredential(from, password);
            smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
            smtpClient.Host = host;

//如果是发送邮箱是gmail要加上这个代码否则邮件无法发送成功
            if (smtpClient.Host == "smtp.gmail.com")
            {
                smtpClient.EnableSsl = true;
                smtpClient.Port = 587;
            }

            try
            {
                smtpClient.Send(message);
            }
            catch
            {
                AssertHelper.NoPass(true, R.Package, R.Keys.K邮件_错误信息_邮件发送失败);
            }
        }


注意:
1、确保strFrom的值和strSmtpServer的值一致,否之会报Send Error:不允许使用邮箱名称。 服务器响应为: You are not authorized to send mail, authentication is required。的错误
2、确保用于发送邮件的邮箱不是刚注册的邮箱,而要用有提供SMTP服务的邮箱的帐号和密码,否则会报邮箱不可以用的错误
引用

为何新申请的邮箱不能用客户端?
  目前免费邮箱新注册的用户不支持直接开通smtp、pop3的服务,之前已开通客户端功能的老用户不受影响。如果需要使用该功能,您可开通增值服务邮箱伴侣或随身邮 ,即可同时获取poo功能。
----------------
新注册的用户付费才能使用...

3、下面两句的书写的顺序不能颠倒
client.UseDefaultCredentials = true;
client.Credentials = new System.Net.NetworkCredential(strFrom, strFromPass);

否则会报这样的错误
引用

Send Error:不允许使用邮箱名称。 服务器响应为: You are not authorized to send mail, authentication is required。就是说没有通过登录认证

4、注意126的域名是smtp.126.com
163的域名是smtp.163.com
分享到:
评论

相关推荐

    C#.net_经典编程例子400个

    273 实例190 获取窗口文本 273 实例191 判断文件是否正在被使用 274 实例192 在程序中调用.HLP文件 275 实例193 C#中实现文件拖放 276 实例194 文件比较 276 第7章 操作系统与Windows...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    《C#开发实例大全(基础卷)》筛选、汇集了C#开发从基础知识到高级应用各个层面约600个实例及源代码,每个实例都按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析解读。全书分6篇共25章,主要...

    【原创】asp.net Demo.zip(从头做成一个ASP.NET实例讲解)

    从头做成一个ASP.NET实例讲解(c#) 开发工具vs2017 压缩文件包含一个讲解Excel文件,还有实例代码, 主要实现登录Demo 包括:引用外部css、外部js,c#判断页面控件值,c#动态改变样式,js动态添加改变样式,js控制...

    C#调用WebService实例和开发(wsdl).rar

    C#调用WebService实例和开发(wsdl).rar

    asp.net 新闻发布系统论文

    该系统使用ASP.NET(C#语言)和ADO.NET技术开发, 实现了网站新闻的动态管理,使得对信息的管理更加及时、高效,提高了工作效率,具有一般新闻系统的功能,主要包括前台新闻查看区和后台管理区,可为学校各部门发布新闻...

    C#编写的集dao+dbUtil+分页+自定义验证+自定义控件的asp.net网站实例

    1、相对数据库路径,通过db的数据库连接文件可用直接连接相对路径数据库,所以本人案例支持外部IIS的支持asp.net的动态服务器空间; 2、CRUD标准化处理代码,等于是通用方法,移植到任何程序,直接调用dbApp类的增删...

    Spring.net框架

    (4)使用Spring.net实现Ioc; (5)Romoting; (6)利用Ioc在不动一行代码的情 况下实现Remoting。为了更好的理解文中的内容,最好顺序阅读。 作为一个应用系统,代码复用至关重要。如果在你的设计中,类与类存在...

    根据.net内部类整合编写ftp上传类(C# )

    使用FtpWebRequest等.net自带的类编写的ftp上传类,编写好的类可以由外部实例调用.

    gitlab-ci.net:无外部依赖项的GitLab Ci API的.net其余客户端实现

    gitlab-ci.net是GitLab Ci API的.net其余客户端实现,没有外部依赖项。 用法 gitlab-ci.net是REST api的包装。 请参阅或快速入门,为 创建一个GitLabCiClient实例: var client = GitLabCiClient . Connect ( " ...

    亮剑.NET深入体验与实战精要2

    《.NET深入体验与实战精要》作者身为从事.NET一线开发的资深开发专家,常年耕耘技术博客,惠及无数.NET新知。此次将长期的思考、感悟,多年的系统开发、设计和团队管理经验,以及深入分析众多项目实战的宝贵成果...

    C#程序开发范例宝典(第2版).part02

    实例229 C#中实现文件拖放 317 实例230 文件比较 318 实例231 获取文件夹中的图标资源 319 实例232 获取文件夹下的所有文件夹及文件的名称 321 第7章 操作系统与Windows相关程序 324 7.1 启动相关 325 实例...

    C#程序开发范例宝典(第2版).part08

    实例229 C#中实现文件拖放 317 实例230 文件比较 318 实例231 获取文件夹中的图标资源 319 实例232 获取文件夹下的所有文件夹及文件的名称 321 第7章 操作系统与Windows相关程序 324 7.1 启动相关 325 实例...

    C#程序开发范例宝典(第2版).part12

    实例229 C#中实现文件拖放 317 实例230 文件比较 318 实例231 获取文件夹中的图标资源 319 实例232 获取文件夹下的所有文件夹及文件的名称 321 第7章 操作系统与Windows相关程序 324 7.1 启动相关 325 实例...

    Whistle:Whistle是一个辅助C#库,用于从.NET进程中启动外部可执行文件并返回该可执行文件产生的任何输出

    Whistle是一个辅助C#库,用于从.NET进程中启动外部可执行文件并返回该可执行文件产生的任何输出。 安装 Whistle在处可用,并且可以使用VisualStudio NuGet程序包管理器或通过NuGet命令行作为程序包安装: 安装包...

    设计模式——基于C#的工程化实现及扩展

    第2篇创建型模式介绍通过将实例化职责委托他方对象的办法,隔离客户程序与具体类型实例化的依赖关系,保证客户程序(或者外部系统)获得期望具体类型实例的、同时不必发生直接的引用;第3篇结构型模式的重点在于如何...

Global site tag (gtag.js) - Google Analytics