WebForm发送邮件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Mail;
using System.Configuration;
using System.Net;
using System.Reflection;
using System.Text;

namespace SendMailMessage.Uitls
{
    public class EMail
    {
        // 实例化一个邮件类
        MailMessage _mailMessage = new MailMessage();
        /// <summary>
        /// 发件使用的邮箱地址
        /// </summary>
        private string _fromEmail = ConfigurationManager.AppSettings["EmailSender"].ToString();

        /// <summary>
        /// 发件邮箱地址密码
        /// </summary>
        private string _senderPassword = ConfigurationManager.AppSettings["EmailServer_Pwd"].ToString();

        /// <summary>
        /// 显示在邮件上的发件人名称
        /// </summary>
        private string _displayName = ConfigurationManager.AppSettings["EmailSenderName"].ToString();

        /// <summary>
        /// 发件邮箱使用的服务器
        /// </summary>
        private string _smtp = ConfigurationManager.AppSettings["EmailServer"].ToString();

        /// <summary>
        /// 邮件的接收者
        /// </summary>
        private string ToEmail { set; get; }

        /// <summary>
        /// 抄送
        /// </summary>
        private string CC { set; get; }

        /// <summary>
        /// 密送
        /// </summary>
        private string Bcc { set; get; }

        /// <summary>
        /// 邮件标题
        /// </summary>
        private string Subject { set; get; }

        /// <summary>
        /// 邮件正文
        /// </summary>
        private string Body { set; get; }

        /// <summary>
        /// 附件
        /// </summary>
        private string Attachments { set; get; }

        public EMail(string toEmail,  string subject, string body)
        {
            ToEmail = toEmail;
            Subject = subject;
            Body = body;
        }

        public EMail(string toEmail, string cc, string bcc, string subject, string body, string attachments)
        {

            CC = cc;
            Bcc = bcc;
            ToEmail = toEmail;
            Subject = subject;
            Body = body;
            Attachments = attachments;

        }
        /// <summary>
        /// 发送email
        /// </summary>
        /// <param name="toEmail">邮件的接收者,支持群发,多个地址之间用半角逗号分开</param>
        /// <param name="subject">主题</param>
        /// <param name="body">正文</param>
        public static bool SendEmail(string toEmail, string subject, string body)
        {
            EMail email = new EMail(toEmail, subject, body);
            return email.Send();
        }

        /// <summary>
        /// 发送email
        /// </summary>
        /// <param name="toEmail">邮件的接收者,支持群发,多个地址之间用半角逗号分开</param>
        /// <param name="cc">抄送,多个地址之间用半角逗号分开</param>
        /// <param name="bcc">密送,多个地址之间用半角逗号分开</param>
        /// <param name="subject">主题</param>
        /// <param name="body">正文</param>
        /// <param name="attachments">附件地址</param>
        public static bool SendEmail(string toEmail, string cc, string bcc, string subject, string body, string attachments)
        {
            EMail email = new EMail(toEmail, cc, bcc, subject, body, attachments);
            return email.Send();
        }

        /// <summary>
        /// 邮件发送
        /// </summary>
        public bool Send()
        {
            Type type = typeof(SmtpClient);
            SmtpClient _smtpClient = new SmtpClient();           

            bool result = false;

            try
            {
                // 将smtp的出站方式设为Network
                _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;

                // smtp服务器是否启用SSL加密
                _smtpClient.EnableSsl = false;

                // 指定smtp服务器地址
                _smtpClient.Host = _smtp;

                // 指定smtp服务器的端口,默认是25,如果采用默认端口,可省去
                //smtp.Port = 25;             

                // 如果你的SMTP服务器不需要身份认证,则使用下面的方式,不过,目前基本没有不需要认证的了
                //smtp.UseDefaultCredentials = true;

                // 如果需要认证,则用下面的方式
                _smtpClient.Credentials = new NetworkCredential(_fromEmail, _senderPassword);

                // 邮件的优先级,分为Low、Normal、 High,通常用Normal即可
                _mailMessage.Priority = MailPriority.High;

                // 收件方看到的邮件来源;第一个参数是发信人邮件地址,第二参数是发信人显示的名称,第三个参数是第二个参数所使用的编码,如果指定不正确,则对方收到后显示乱码,936是简体中文的codepage值
                _mailMessage.From = new MailAddress(_fromEmail, _displayName, Encoding.GetEncoding(936));

                // ReplyTo 表示对方回复邮件时默认的接收地址,即:你用一个邮箱发信,但却用另一个来收信,后两个参数的意义,同From
                _mailMessage.ReplyTo = new MailAddress(_fromEmail, _displayName, Encoding.GetEncoding(936));

                // 邮件的接收者,支持群发,多个地址之间用半角逗号分开
                _mailMessage.To.Add(ToEmail);

                // 抄送
                if (!string.IsNullOrEmpty(CC))
                {
                    _mailMessage.CC.Add(CC);
                }

                // 密送
                if (!string.IsNullOrEmpty(Bcc))
                {
                    _mailMessage.Bcc.Add(Bcc);
                }

                // 邮件标题
                _mailMessage.Subject = Subject;

                // 这里非常重要,如果你的邮件标题包含中文,这里一定要指定,否则对方收到的极有可能是乱码
                _mailMessage.SubjectEncoding = Encoding.GetEncoding(936);

                // 邮件正文是否是HTML格式
                _mailMessage.IsBodyHtml = true;

                // 邮件正文的编码,设置不正确,接收者会收到乱码
                _mailMessage.BodyEncoding = Encoding.GetEncoding(936);

                // 邮件正文
                _mailMessage.Body = Body;

                // 附件
                if (!string.IsNullOrEmpty(Attachments))
                {
                    string[] attachmentsArray = Attachments.Split(‘,‘);

                    for (int i = 0; i < attachmentsArray.Length; i++)
                    {
                        _mailMessage.Attachments.Add(new Attachment(attachmentsArray[i]));
                    }
                }

                // 发送邮件
                _smtpClient.Send(_mailMessage);
                result = true;
            }
            catch (Exception ex)
            {
                result = false;
            }

            return result;
        }
    }

}
时间: 2024-10-16 22:38:07

WebForm发送邮件的相关文章

C# 发送邮件整理,包括控制台程序、WPF、WebForm 及 ASP.NET MVC

发送邮件使用SMTP服务器,有两种方案,一种是使用IIS的SMTP功能:另一种是直接使用邮件供应商的SMTP,比如Gmail.Sina.QQ等,使用这些SMTP服务器必须得注册帐号,一般可以直接用邮箱及密码,但是有些邮箱必须开启POP3/SMTP服务才可以,比如QQ邮箱默认是关闭的,可以在“设置”->“账户”里面找到.我今天整理的都是用的第二种. 早期的.NET版本用的是 System.Web.Mail 类提供的功能来发邮件:2.0版本推出了 System.Net.Mail 类来代替 Syste

WebForm 【发送邮件】

C#实现简单的SmtpClient发送邮件 分析 需要什么 发送邮件     --       发送内容         --      接收邮件 流程(各功能都适用) 创建对象    --      给对象属性赋值    --     调用方法 发邮件 创建邮箱服务器对象 发件人 收件人 创建邮件对象 邮件主题 邮件内容 设置验证方案 设置资格证书 发送 using System.Net;               --互联网命名空间using System.Net.Mail;      

.Net使用163smtp发送邮件时错误:邮箱不可用. has no permission解决方法

C#实现简单邮件发送代码如下 public static void SendAsync(string emailTo, string subject, string mailBody) { var msg = new MailMessage(); msg.To.Add(emailTo); // msg.From = new MailAddress(_userNameForEmail, "显示的发件人名称", System.Text.Encoding.UTF8); msg.Subject

Jenkins 2.60.x 2种发送邮件方式

1.1 默认发邮件的配置方式 1.1.1 系统级别 邮件配置 1.1.2 项目级别 邮件配置 测试构建失败是否会发邮件: 控制台输出:提示已发送邮件给项目配置指定的两个邮箱地址. 1.1.2.1  查看邮箱 1.2 第三方插件 发送邮件的配置方式 1.2.1 系统级别 邮件配置 再次打开系统配置找到如下图的地方配置发送邮件的触发条件. 1.2.1 项目级别 邮件配置 控制台输出(console output): 1.2.1.1  查看邮件 确认第一个邮箱收件人 确认第二个邮箱收件人

python 监控日志并发送邮件报警

#!/usr/bin/env python #coding:utf8 import re import os import time import smtplib import socket import fcntl import struct from email.mime.text import MIMEText def get_ip_address(ifname):     s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)     r

C# 发送邮件 附件名称为空

 示例代码: // 1.创建邮件 MailMessage mailMsg = new MailMessage(); mailMsg.To.Add(new MailAddress("[email protected]")); // 2.设置邮件标题.正文等信息 mailMsg.HeadersEncoding = Encoding.GetEncoding("gb2312"); mailMsg.SubjectEncoding = Encoding.GetEncoding(

Java 发送邮件

一 邮件的发送过程 ① 发件人编辑邮件 ② 邮件发送至发送账号所有的SMTP服务器 ③ 如果发送账号和接收账号不在同一SMTP服务器,发送账号所属的服务器负责将邮件发至收件人所属SMTP服务器 ④ 收件人查看邮件时,收件人所属服务器把邮件传给收件人的客户端 从而使用Java开发程序所需做的事情:创建和编辑邮件,发送邮件至发件人所属服务器 二 邮件的基本组成内容 如上图所示,邮件的主要组成部分有 发件人,收件人,抄送,密送,主题,附件,正文 正文是用富文本编辑器编辑,即可以是无格式文本,也可以是h

使用nodemailer发送邮件

开发网站的时候经常会遇到发送验证邮件的问题,今天介绍一种node平台上功能强大的module——nodemailer 官方网址:http://nodemailer.com/nodemailer-0-7-deprecated/ nodemailer目前有三个版本,分别是0.7.X,1.X和2.X 三个版本中最大的区别在于创建连接池,其中2.X变化别叫大,支持第三方发送邮件动态的accessKeyId 如果我们使用自己的邮箱的话,0.7.x版本就足够,本次的demo就是使用的该版本,如果有更多的需求

linux 使用msmtp登陆指定账户发送邮件

linux可以直接用mail发送邮件给对方,但是这种邮件,容易被QQ邮箱或者其他邮箱拦截掉 所以必须用指定账户发送邮件,才不会拦截. msmtp 是一个SMTP 客户端. 在默认情况下,它把邮件送给负责发邮件的SMTP 服务器 安装msmtp 下载最新版本 http://iweb.dl.sourceforge.net/project/msmtp/msmtp/1.6.3/msmtp-1.6.3.tar.xz tar xvf msmtp-1.6.3.tar.xz -C /usr/src cd /us