邮件发送---在.net2003和2005中

smtpClient发邮件错误:不允许使用邮箱名称。 服务器响应为: You are not authorized to send mail, authentication is required

使用smtpClient发送邮件时,经常跑出难以明白的错误。其实主要都和我们申请的免费邮箱有关系。有些邮箱不支持,比如163的以前申请的帐号可以用,新注册的帐号是发不了的。
  /// <summary>
    
/// 功能:发送邮件,返回字符串:“发送成功”否则返回错误代码。
    
/// 创建:2007-08-23
    
/// </summary>
    
/// <param name="MailTo">MailTo为收信人地址</param>
    
/// <param name="Subject">Subject为标题</param>
    
/// <param name="Body">Body为信件内容</param>
    
/// <param name="BodyFormat">BodyFormat为信件内容格式:0为Text,1为Html</param>
    
/// <param name="Priority">Priority为优先级:0为低,1为中,2为高</param>
    
/// <param name="Attachments">Attachment为附件,为null则不发送</param>

    public static string SendMail(System.Collections.ArrayList MailTo, string Subject, string Body, int BodyFormat, int Priority, string Attachments)
    
{
        
string result;

        SmtpClient mail 
= new SmtpClient();
        
//发送方式
        mail.DeliveryMethod = SmtpDeliveryMethod.Network;
        
//smtp服务器
        mail.Host = "smtp.sina.com";
        
//用户名凭证               
        mail.Credentials = new System.Net.NetworkCredential("mail_user_name""mail_user_password");
        
//邮件信息
        MailMessage message = new MailMessage();
        
//发件人
        message.From = new MailAddress("mail_user_name@sina.com");    
        
//收件人
        foreach (object item in MailTo)
        
{
            message.To.Add(item.ToString());
        }

        
//主题
        message.Subject = Subject;
        
//内容
        message.Body = Body;
        
//正文编码
        message.BodyEncoding = System.Text.Encoding.UTF8;
        
//设置为HTML格式
        message.IsBodyHtml = true;
        
//优先级
        message.Priority = MailPriority.High;

        
try
        
{
            mail.Send(message);
            result 
= "发送成功";
            
return result;
        }

        
catch (Exception e)
        
{
            result 
= e.ToString();
        }

        
return result;
    }

不同的邮箱,要改的部分主要是“上面代码中高亮的部分”,有些邮箱地址是要加后缀 “@xxx.com”,而有些邮箱只要用户名就好了 .

附带以前2003版的:

        
/// <summary>
        
/// 发送邮件
        
/// </summary>
        
/// <param name="Sender">发件人邮箱地址</param>
        
/// <param name="Receiver">收件人邮箱地址</param>
        
/// <param name="Title">邮件标题</param>
        
/// <param name="Content">邮件内容</param>
        
/// <param name="SmtpServer">邮箱服务器名称</param>
        
/// <param name="Validate">服务器是否需要验证</param>
        
/// <param name="UserName">验证用户名</param>
        
/// <param name="Password">验证密码</param>
        
/// <returns>结果</returns>

        public string SendMail(string from,string to,string title,string body,string enclosure,
                                    
string smtpServer,bool validate,string userName,string password)
        
{
            MailMessage mail 
= new MailMessage();//实例化MailMessage
            mail.From = from; //邮件发件人
            mail.To = to;//邮件收件人
            mail.Subject = title;//邮件标题
            mail.Body = body; //邮件内容
            mail.BodyFormat = MailFormat.Html; //邮件文本格式
            mail.Priority = MailPriority.Normal;//邮件发送级别
            if(enclosure != "")
            
{
                
//添加附件
                MailAttachment ma = new MailAttachment(enclosure);
                mail.Attachments.Add(ma);
            }

            
//邮件服务器是否需要验证
            if(validate)
            
{
                
if(userName != "" && password != "")
                
{
                    mail.Fields.Add(
"http://schemas.microsoft.com/cdo/configuration/smtpauthenticate""1");  
                    mail.Fields.Add(
"http://schemas.microsoft.com/cdo/configuration/sendusername", userName); 
                    mail.Fields.Add(
"http://schemas.microsoft.com/cdo/configuration/sendpassword", password); 
                }

                
else
                
{
                    
return "缺少验证用户名和密码";
                }

            }

            
try
            
{
                SmtpMail.SmtpServer 
= smtpServer;//设置邮件服务器
    
                
//发送邮件
                SmtpMail.Send(mail);
                
return "邮件发送成功!";
            }

            
catch
            
{
                
return "邮件发送失败!";
            }

        }

 来源:http://www.cnblogs.com/oiea/archive/2007/11/06/951234.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开发人员如何成为架构师

很多架构师都是从好的开发人员逐步过渡而来的&#xff0c;但并非每个好的开发人员都希望成为架构师&#xff0c;而且他们并不是都适合做架构师。无论您是打算进行职业转型的开发人员&#xff0c;还是寻找能承担体系结构设计责任的合适人选的经理&#xff0c;都务必对此转型过程…

WSL2 安装中文输入法教程 简单有效

很多教程我都参考过 大多有问题 只有这个简单明了实用 WSL2安装中文输入法教程 https://monkeywie.cn/2021/09/26/wsl2-gui-idea-config/

VB2005.Net 环境下使用Jmail组件发送邮件

配置环境&#xff1a;.Net Framework 2.0 测试版2&#xff0c;w3Jmail4.4&#xff0c;Windows XP (sp2) 使用过程:1.首先安装jmail4.4 2.找到jmail.dll&#xff08;安装目录下&#xff09;copy 到D:/Microsoft Visual Studio 8/SDK/v2.0/Bin 目录下 3.假设你把Visual Basic …

好片与烂片

短短的几天&#xff0c; 就看到这么多的留言&#xff0c; 其实是有点喜出望外的&#xff0c;因为&#xff0c; 我在上传这些文字的时候&#xff0c; 是怀着一种惴惴然和惶恐的心情的&#xff0c;因为&#xff0c; 我不知道我的“谬论”是否可以登上大雅之堂&#xff0c;是否能…

react学习(73)--子组件this

componentDidMount() {console.log(this.props, props);console.log(this, this);this.props.onRef && this.props.onRef(this);}

C++ 17 inline static 实现单例模式

C 17 inline 内联定义静态变量 正在学习C20新标准,突然看到C17拓展inline变量,突然想到可不可以在类内部直接初始化静态变量,整个单例模式呢 不需要在类外部初始化静态变量 实现懒加载,需要的时候才加载 线程安全 外部无法调用构造函数,析构函数 代码如下: /** 多线程条…

通过configSource提高web.config配置灵活性

很多时候我们会有这样的情况&#xff0c;开发环境和测试环境中的配置文件是不一样的&#xff0c;最明显的就是数据库连接串&#xff0c;这样&#xff0c;每次我们发布一个测试版本&#xff0c;都要手动去修改一下配置文件&#xff0c;是不是很麻烦的说。其实利用web.config中的…

实现分页的通用存储过程

显示指定表、视图、查询结果的第X页 对于表中主键或标识列的情况,直接从原表取数查询&#xff0c;其它情况使用临时表的方法 如果视图或查询结果中有主键,不推荐此方法 如果使用查询语句,而且查询语句使用了order by,则查询语句必须包含top 语句--感谢csdn.net邹建 --*//*--调…

React(74)--onRef在react中的使用

当在子组件中调用onRef函数时&#xff0c;正在调用从父组件传递的函数。this.props.onRef&#xff08;this&#xff09;这里的参数指向子组件本身&#xff0c;父组件接收该引用作为第一个参数&#xff1a;onRef {ref >&#xff08;this.child ref&#xff09;}然后它使用t…

CS144 lab0 笔记

CS144 lab0 笔记 下学期就学习计算机网络了,假期正好找个lab预习一下 配置 直接用 WSL2 Clion(安装在WSL2上) 做的实验,还是比用vscode方便一些的 直接fork仓库git clone …用clion打开,他都会自动生成开始写代码 实验 writing webget(入门) 这个实验就是让你熟悉一下网络…

ASP.NET常用代码

1. 打开新的窗口并传送参数&#xff1a; 传送参数&#xff1a; response.write("<script>window.open(*.aspx?id"this.DropDownList1.SelectIndex"&id1"...")</script>")接收参数&#xff1a; string a Request.QueryString(…

一步步学习SPD2010--第二章节--处理SP网站(6)---- 探索SP网站

SP技术没有一个界面&#xff1b;你可以通过使用Web浏览器或者兼容程序如Office 应用程序&#xff0c;包括SPD。你可以选择适合你必须完成的任务的接口。然而&#xff0c;根据你选择的程序&#xff0c;你可能有SP网站的不同视图。如果你使用MS Word&#xff0c;你只看到了网站和…

江民公司网络版问题汇总三

客户端和主控连接问题 登录江民控制台时&#xff0c;查找主机IP地址时查找不到&#xff0c;下面的客户端也查找不到主控的IP地址。<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1&#xff0e; 如果您的主控机器是XP 或者2003…

CS144 lab1 笔记

CS144 lab1 笔记 上图是TCP实现中模块和数据流的安排,我们要实现的就是StreamReassembler 一个字符重组器,将乱序的字符串,按照索引排序,使其成为连续字符,供TCPSender和TCPReceiver使用 有容量限制,超出的字符直接丢掉(不是整个片段) TCP接收到的片段从零开始,不会溢出 任何…

Netty 4.0 新的特性及需要注意的地方

Netty 4.0 新的特性及需要注意的地方 这篇文章和你一起过下Netty的主发行版本的一些显著的改变和新特性&#xff0c;让你在把你的应用程序转换到新版本的时候有个概念。 项目结构改变 Netty的包名从org.jboss.netty改为io.netty&#xff0c;因为我们不在是JBoss.org的一部分了。…

CS144 lab2 笔记

CS144 lab2 笔记 介绍 在lab0中&#xff0c;我们实现了一个ByteStream。 在lab1中&#xff0c;实现了一个重组字符片段的StreamReassembler&#xff0c;重组收到的字符片段&#xff0c;并且将排序好的字符串退送到ByteStream 在lab2中&#xff0c;j将实现一个TCPReceiver,它…

附件下载,中文文件名乱码如何解决???

问:我写了个程序&#xff0c;里面有文件要作为附件下载&#xff0c;英文文件名都正常&#xff0c;但中文文件名就会乱码&#xff0c;不知道如何解决&#xff0c;望高手指点。代码如下&#xff1a;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&am…