使用System.Net.Mail类实现邮件发送

简介: 有些 SMTP 服务器要求在代表客户端发送电子邮件前验证客户端的身份。当此 SmtpClient 对象应该使用当前登录用户的默认凭据进行身份验证(如果服务器要求)时,请将此属性设置为 true。

     有些 SMTP 服务器要求在代表客户端发送电子邮件前验证客户端的身份。当此 SmtpClient 对象应该使用当前登录用户的默认凭据进行身份验证(如果服务器要求)时,请将此属性设置为 true。对于客户端应用程序,这是在大多数情况下都需要的行为。也可以使用应用程序和计算机配置文件指定凭据信息。有关更多信息,请参见 <mailSettings> 元素(网络设置)

     如果 UseDefaultCredentials 属性设置为 false,则连接到服务器时会将 Credentials 属性中设置的值用作凭据。如果 UseDefaultCredentials 属性设置为 false 并且尚未设置 Credentials 属性,则将邮件以匿名方式发送到服务器。UseDefaultCredentials 的默认值为false。

     如果提供用于基本身份验证的凭据,则凭据将以明文形式发送到服务器。这可能会产生安全问题,因为凭据可以被他人看见从而加以利用。但是向163的邮箱发送邮件是必须要带上发送者的凭据信息,否则邮件是发送不出去的。

     SmtpClient也可以这样建立:SmtpClient client=new SmtpClient(smtp_server),因为邮件发送服务器的默认端口是25。

     1、QQ邮箱向163邮箱发送邮件

Code
private static void TimeEvent(object source, ElapsedEventArgs e)
{
    
string smtp_server="smtp.qq.com";
    
int port = 25;
    
string mail_from = "***from_mail_username***@qq.com";
    
string sender = "***from_mail_username***";
    
string mail_to = "***to_mail_username***@163.com";
    
string receiver = "***to_mail_username***@";
    
string subject = "Title Test"
    
string body = "Content Test";
    
try
    {
    SendEmail(smtp_server, port, mail_from, sender, mail_to, receiver, subject, body);
    }
    
catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
}

public static void SendEmail(string smtp_server, int port, string mail_from, string sender, string mail_to, string receiver, string subject, string body)
{
    MailAddress from 
= new MailAddress(mail_from, sender);
    MailAddress to 
= new MailAddress(mail_to, receiver);
    MailMessage message 
= new MailMessage(from, to);
    message.BodyEncoding 
= Encoding.UTF8;
    message.IsBodyHtml 
= true;
    message.Subject 
= subject;
    message.Body 
= body;

    SmtpClient client 
= new SmtpClient(smtp_server, port);   
    client.Credentials 
= new NetworkCredential("***from_mail_username***@qq.com""***pwd***");
    client.Send(message);
}

 

     2、163邮箱向163邮箱发送邮件

Code
private static void TimeEvent(object source, ElapsedEventArgs e)
{
    
string smtp_server="smtp.163.com";
    
int port = 25;
    
string mail_from = "***from_mail_username***@163.com";
    
string sender = "***from_mail_username***";
    
string mail_to = "***to_mail_username***@163.com";
    
string receiver = "***to_mail_username***";
    
string subject = "Title Test"
    
string body = "Content Test";
    
try
    {
    SendEmail(smtp_server, port, mail_from, sender, mail_to, receiver, subject, body);
    }
    
catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
}

public static void SendEmail(string smtp_server, int port, string mail_from, string sender, string mail_to, string receiver, string subject, string body)
{
    MailAddress from 
= new MailAddress(mail_from, sender);
    MailAddress to 
= new MailAddress(mail_to, receiver);
    MailMessage message 
= new MailMessage(from, to);
    message.BodyEncoding 
= Encoding.UTF8;
    message.IsBodyHtml 
= true;
    message.Subject 
= subject;
    message.Body 
= body;

    SmtpClient client 
= new SmtpClient(smtp_server);   
    client.Credentials 
= new NetworkCredential("***from_mail_username***@163.com""***pwd***");
    client.Send(message);
}

 

     3、163邮箱向QQ邮箱发送邮件

Code
private static void TimeEvent(object source, ElapsedEventArgs e)
{
    
string smtp_server="smtp.163.com";
    
int port = 25;
    
string mail_from = "***from_mail_username***@163.com";
    
string sender = "***from_mail_username***";
    
string mail_to = "***to_mail_username***@qq.com";
    
string receiver = "***to_mail_username***";
    
string subject = "Title Test"
    
string body = "Content Test";
    
try
    {
    SendEmail(smtp_server, port, mail_from, sender, mail_to, receiver, subject, body);
    }
    
catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
}

public static void SendEmail(string smtp_server, int port, string mail_from, string sender, string mail_to, string receiver, string subject, string body)
{
    MailAddress from 
= new MailAddress(mail_from, sender);
    MailAddress to 
= new MailAddress(mail_to, receiver);
    MailMessage message 
= new MailMessage(from, to);
    message.BodyEncoding 
= Encoding.UTF8;
    message.IsBodyHtml 
= true;
    message.Subject 
= subject;
    message.Body 
= body;

    SmtpClient client 
= new SmtpClient(smtp_server);   
    client.Credentials 
= new NetworkCredential("***from_mail_username***@163.com""***pwd***");
    client.Send(message);
}

 

     3、QQ邮箱向QQ邮箱发送邮件

Code
private static void TimeEvent(object source, ElapsedEventArgs e)
{
    
string smtp_server="smtp.qq.com";
    
int port = 25;
    
string mail_from = "***from_mail_username***@qq.com";
    
string sender = "***from_mail_username***";
    
string mail_to = "***to_mail_username***@qq.com";
    
string receiver = "***to_mail_username***";
    
string subject = "Title Test"
    
string body = "Content Test";
    
try
    {
    SendEmail(smtp_server, port, mail_from, sender, mail_to, receiver, subject, body);
    }
    
catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
}

public static void SendEmail(string smtp_server, int port, string mail_from, string sender, string mail_to, string receiver, string subject, string body)
{
    MailAddress from 
= new MailAddress(mail_from, sender);
    MailAddress to 
= new MailAddress(mail_to, receiver);
    MailMessage message 
= new MailMessage(from, to);
    message.BodyEncoding 
= Encoding.UTF8;
    message.IsBodyHtml 
= true;
    message.Subject 
= subject;
    message.Body 
= body;

    SmtpClient client 
= new SmtpClient(smtp_server);   
    client.Credentials 
= new NetworkCredential("***from_mail_username***@qq.com""***pwd***");
    client.Send(message);
}
相关文章
|
12月前
|
IDE API 开发工具
拦截|篡改|伪造.NET类库中不限于public的类和方法
本文除了回顾拦截.NET类库中的方法,实现方法参数的篡改、方法返回结果的伪造,再着重介绍.NET类库中非public类及方法如何拦截。
拦截|篡改|伪造.NET类库中不限于public的类和方法
|
27天前
|
缓存 程序员
封装一个给 .NET Framework 用的内存缓存帮助类
封装一个给 .NET Framework 用的内存缓存帮助类
|
2月前
|
存储 开发框架 前端开发
基于Lumisoft.NET组件,使用IMAP协议收取邮件
基于Lumisoft.NET组件,使用IMAP协议收取邮件
|
3月前
|
存储 Go C#
【.NET Core】深入理解IO之File类
【.NET Core】深入理解IO之File类
52 6
|
3月前
|
存储 开发框架 缓存
【.NET Core】你真的了解HttpRuntime类吗
【.NET Core】你真的了解HttpRuntime类吗
29 0
|
4月前
|
消息中间件
.NET 中 Channel 类简单使用
`System.Threading.Channels` 提供异步生产者-消费者数据结构,用于.NET Standard上的跨平台同步。频道实现生产者/消费者模型,允许在任务间异步传递数据。简单示例展示如何创建无界和有界频道,以及多生产者和消费者共享频道的场景。频道常用于内存中的消息队列,通过控制生产者和消费者的速率来调整系统流量。
|
4月前
|
SQL 数据库连接 数据库
VB.NET 中使用SqlConnection类连接到Microsoft SQL Server数据库的详细步骤
VB.NET 中使用SqlConnection类连接到Microsoft SQL Server数据库的详细步骤
216 0
|
开发框架 前端开发 .NET
ASP.NET Core 基础知识之​Startup 类配置
Startup 类配置服务和应用的请求管道。
135 0
.NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法
.NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法
156 0
|
开发框架 JSON 前端开发
【C#】.net core2.1,自定义全局类对API接口和视图页面产生的异常统一处理
在开发一个网站项目时,异常处理和过滤功能是最基础的模块 本篇文章就来讲讲,如何自定义全局异常类来统一处理
233 0