C#利用smtp服务器发送邮件简介

2024-04-02 09:38

本文主要是介绍C#利用smtp服务器发送邮件简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在命名空间using System.Net.Mail中提供方法根据指定的smtp服务器来发送邮件。下面说说如何实现:

  1、首先要发送邮件,需要有一个邮箱帐号,比如网易邮箱、新郎邮箱、qq邮箱等,我以网易的163邮箱为例。然后我们需要知道163邮箱的smtp服务器地址:smtp.163.com。一般常用的Smtp服务器地址为:
    网易126:smtp.126.com
    网易163:smtp.163.com
    搜狐:smtp.sohu.com
    新浪:smtp.sina.com.cn
    雅虎:smtp.mail.yahoo.com

  2、现在我们可以开始实现了。在新建的C# Console Application中,需要加入两个命名空间:

        using  System.Net.Mail;   // 新建邮件、发送邮件需要用到
        using  System.Net;        // 建立认证帐号需要用到

  3、下面是发送邮件的函数:

  
public static void SendEmail(
string userEmail, //发件人邮箱
string userPswd, //邮箱帐号密码
string toEmail, //收件人邮箱
string mailServer, //邮件服务器
string subject, //邮件标题
string mailBody, //邮件内容
string[] attachFiles //邮件附件
)
{
//邮箱帐号的登录名
string username = userEmail.Substring(0, userEmail.IndexOf('@'));
//邮件发送者
MailAddress from = new MailAddress(userEmail);
//邮件接收者
MailAddress to = new MailAddress(toEmail);
MailMessage mailobj
= new MailMessage(from, to);
// 添加发送和抄送
// mailobj.To.Add("");
// mailobj.CC.Add("");

//邮件标题
mailobj.Subject = subject;
//邮件内容
mailobj.Body = mailBody;
foreach (string attach in attachFiles)
{
mailobj.Attachments.Add(
new Attachment(attach));
}

//邮件不是html格式
mailobj.IsBodyHtml = false;
//邮件编码格式
mailobj.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312");
//邮件优先级
mailobj.Priority = MailPriority.High;

//Initializes a new instance of the System.Net.Mail.SmtpClient class
//that sends e-mail by using the specified SMTP server.
SmtpClient smtp = new SmtpClient(mailServer);
//或者用:
//SmtpClient smtp = new SmtpClient();
//smtp.Host = mailServer;

//不使用默认凭据访问服务器
smtp.UseDefaultCredentials = false;
smtp.Credentials
= new NetworkCredential(username, userPswd);
//使用network发送到smtp服务器
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
try
{
//开始发送邮件
smtp.Send(mailobj);
}

catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
}

}

 4、好了,你也可以去试试给自己的应用程序加上发送邮件的功能了。

这篇关于C#利用smtp服务器发送邮件简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869637

相关文章

2. c#从不同cs的文件调用函数

1.文件目录如下: 2. Program.cs文件的主函数如下 using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;namespace datasAnalysis{internal static

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 AutoML(自动机器学习)是一种使用机器学习技术来自动化机器学习任务的方法。在大模型中的AutoML是指在大型数据集上使用自动化机器学习技术进行模型训练和优化。

C# dateTimePicker 显示年月日,时分秒

dateTimePicker默认只显示日期,如果需要显示年月日,时分秒,只需要以下两步: 1.dateTimePicker1.Format = DateTimePickerFormat.Time 2.dateTimePicker1.CustomFormat = yyyy-MM-dd HH:mm:ss Tips:  a. dateTimePicker1.ShowUpDown = t

C#关闭指定时间段的Excel进程的方法

private DateTime beforeTime;            //Excel启动之前时间          private DateTime afterTime;               //Excel启动之后时间          //举例          beforeTime = DateTime.Now;          Excel.Applicat

C# 防止按钮botton重复“点击”的方法

在使用C#的按钮控件的时候,经常我们想如果出现了多次点击的时候只让其在执行的时候只响应一次。这个时候很多人可能会想到使用Enable=false, 但是实际情况是还是会被多次触发,因为C#采用的是消息队列机制,这个时候我们只需要在Enable = true 之前加一句 Application.DoEvents();就能达到防止重复点击的问题。 private void btnGenerateSh