C#实现qq邮箱发送邮件(验证码)

首先,登录发送者QQ邮箱,点开设置----》账户,再将这个(POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务)开启
在这里插入图片描述使用QQ邮箱发送验证码,只需要开启POP3/SMTP服务即可。
开启之后点开生成授权码,获得授权码后,将授权码放入下面代码中即可!

接着编写一个类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Net.Mail;
using System.Net;
using System.Net.Mime;

namespace SendEmail
{
class Send
{
//实例化一个发送邮件类。
private static MailMessage mailMessage = new MailMessage();
public static bool QQ_email()
{
//发件人邮箱地址,方法重载不同,可以根据需求自行选择。
mailMessage.From = new MailAddress(“发件人邮箱”,“发件人昵称”);
//收件人邮箱地址。
mailMessage.To.Add(new MailAddress(“收件人邮箱”));
//邮件标题。
mailMessage.Subject = “验证码”;
//邮件内容。
mailMessage.Body = “您好,您的验证码为:663245”;
//添加到附件中
AddAnnex(“1号附件路径,2号附件路径,…”);

        //实例化一个SmtpClient类。
        SmtpClient client = new SmtpClient();
 		 //在服务器中使用,修改禁用的端口号。
    	 client.Port = 587;
        //在这里我使用的是qq邮箱,所以是smtp.qq.com,如果你使用的是126邮箱,那么就是smtp.126.com。
        client.Host = "smtp.qq.com";
        //使用安全加密连接。
        client.EnableSsl = true;
        //不和请求一块发送。
        client.UseDefaultCredentials = false;
        //验证发件人身份(发件人的邮箱,邮箱里的生成授权码);
        client.Credentials = new NetworkCredential("发件人邮箱", "发件人授权码");
        //发送
        client.Send(mailMessage);
        return true;
    }


    private static void AddAnnex(string Path)
    {
        string[] path = Path.Split(',');
        Attachment data;
        ContentDisposition disposition;
        for (int i = 0; i < path.Length; i++)
        {
            data = new Attachment(path[i], MediaTypeNames.Application.Octet);//实例化附件 
            disposition = data.ContentDisposition;
            disposition.CreationDate = System.IO.File.GetCreationTime(path[i]);//获取附件的创建日期 
            disposition.ModificationDate = System.IO.File.GetLastWriteTime(path[i]);//获取附件的修改日期 
            disposition.ReadDate = System.IO.File.GetLastAccessTime(path[i]);//获取附件的读取日期 
            mailMessage.Attachments.Add(data);//添加到附件中 
        }
    }
}

}
补充一点,自己遇到的问题,我在本地测试的时候能够正常发送邮件,但是一但部署到服务器上就不能发送邮件了,邮件部署到服务器上发送不出的原因其实是服务器禁用了邮箱端口25,只要将其端口改掉就OK啦!
其实解决办法很简单:添加此代码(client.Port = 587)。

借鉴文章:https://blog.csdn.net/DK18397606232/article/details/90553024

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值