[转]C# 发送Gmail邮件

网站需要自动回复邮件,邮箱是Gmail的,本来是想用Jmail组件,尝试很多次还是不行。

Gmail的SMTP端口需要465或者587。而且需要ssl加密。

找到使用System.Net.Mail的解决方案。

 

Mail.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Mail;
using System.Net;
using log4net;
using System.Configuration;

namespace MasterSoft.WinUI
{
    
/// <summary>
    
/// 发邮件模块
    
/// Author:tonyepaper.cnblogs.com
    
/// </summary>
    public class Mail
    {
        
private string senderAddress;
        
/// <summary>
        
/// 发件人
        
/// </summary>
        public string SenderAddress
        {
            
get { return senderAddress; }
            
set { senderAddress = value; }
        }
        
private string receiverAddess;
        
/// <summary>
        
/// 收件人
        
/// </summary>
        public string ReceiverAddess
        {
            
get { return receiverAddess; }
            
set { receiverAddess = value; }
        }
        
private string subject;
        
/// <summary>
        
/// 主题
        
/// </summary>
        public string Subject
        {
            
get { return subject; }
            
set { subject = value; }
        }
        
private string body;
        
/// <summary>
        
/// 内容
        
/// </summary>
        public string Body
        {
            
get { return body; }
            
set { body = value; }
        }
        
private string smtpHost;
        
/// <summary>
        
/// SMTP主机
        
/// </summary>
        public string SmtpHost
        {
            
get { return smtpHost; }
            
set { smtpHost = value; }
        }
        
private int smtpPort;
        
/// <summary>
        
/// SMTP端口
        
/// </summary>
        public int SmtpPort
        {
            
get { return smtpPort; }
            
set { smtpPort = value; }
        }
        
private string smtpPassword;
        
/// <summary>
        
/// SMTP密码
        
/// </summary>
        public string Password
        {
            
get { return smtpPassword; }
            
set { this.smtpPassword = value; }
        }
        
/// <summary>
        
/// 从配置文件中读出SMTP相关信息
        
/// </summary>
        public Mail()
        {
            senderAddress 
= ConfigurationManager.AppSettings["SmtpUser"];
            smtpPassword 
= ConfigurationManager.AppSettings["SmtpPassword"];
            smtpHost 
= ConfigurationManager.AppSettings["SmtpHost"];
            smtpPort 
= Int32.Parse(ConfigurationManager.AppSettings["SmtpPort"]);
        }
        
/// <summary>
        
/// 邮件
        
/// </summary>
        
/// <param name="receiverAddess">收件人地址</param>
        
/// <param name="subject">主题</param>
        
/// <param name="body">内容</param>
        public Mail(string receiverAddess, string subject, string body):this()
        {
            
this.receiverAddess = receiverAddess;
            
this.subject = subject;
            
this.body = body;
        }
        
/// <summary>
        
/// 发送邮件
        
/// </summary>
        public bool Send()
        {
            MailMessage mailMessage 
= new MailMessage(senderAddress, receiverAddess);
            mailMessage.Subject 
= subject;
            mailMessage.Body 
= body;

            SmtpClient smtpClient 
= new SmtpClient(smtpHost, smtpPort);
            //使用SSL加密连线
            smtpClient.EnableSsl=true;
            NetworkCredential networkCredential 
= new NetworkCredential(senderAddress, smtpPassword);
            smtpClient.Credentials 
= networkCredential;
            
try
            {
                smtpClient.Send(mailMessage);
                
return true;
            }
            
catch (Exception ex)
            {
                
return false;
            }
        }
    }
}
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  
<appSettings>
    
<add key="SmtpHost" value="smtp.gmail.com"/>
    
<add key="SmtpPort" value="587"/>
    
<add key="SmtpUser" value="tonyxxx@gmail.com"/>
    
<add key="SmtpPassword" value="*******"/>
  
</appSettings>
</configuration>

发现一个问题.如果使用465端口就会发生超时的错误.使用587就不会.奇怪.不过使用FoxMail来用465端口发信就正常.知道原因的请指点一下.谢谢!

 

原始的,底层的东西不一定不好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值