其实你不懂

导航

邮件发送

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Net;
using System.Net.Mail;


namespace Mail
{
    public partial class frmSendMail : Form
    {
        public frmSendMail()
        {
            InitializeComponent();
        }
        private MailMessage mailmessage;
        private SmtpClient smtpclient;
        private string password;    //发件人密码
        /// <summary>
        ///
        /// </summary>
        /// <param name="to">收件人地址</param>
        /// <param name="from">发件人地址</param>
        /// <param name="body">邮件正文</param>
        /// <param name="title">邮件主题</param>
        /// <param name="password">发件人密码</param>
        public void SendMail(string to, string from, string body, string title, string password)
        {
            mailmessage = new MailMessage();
            mailmessage.To.Add(to);
            mailmessage.From = new MailAddress(from);
            mailmessage.Body = body;//邮件内容
            mailmessage.Subject = title;//邮件标题
            mailmessage.IsBodyHtml = true; //是否是HTML邮件
            mailmessage.BodyEncoding = Encoding.UTF8; //邮件标题编码
            mailmessage.Priority = MailPriority.Normal;//邮件优先级
            this.password = password;
        }


        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSendMail_Click(object sender, EventArgs e)
        {
            Send();
        }
        /// <summary>
        /// 异步发送邮件
        /// </summary>
        /// <param name="completeMethod"></param>
        public void SendAsync(SendCompletedEventHandler completeMethod)
        {
            if (mailmessage != null)
            {
                smtpclient = new SmtpClient();
                smtpclient.Credentials = new System.Net.NetworkCredential
(mailmessage.From.Address, password);//设置发件人身份的票据 
                smtpclient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                smtpclient.Host = "smtp." + mailmessage.From.Host;
                smtpclient.SendCompleted += new SendCompletedEventHandler
(completeMethod);//注册异步发送邮件完成时的事件 
                smtpclient.SendAsync(mailmessage, mailmessage.Body);

            }
        }

        /**/
        /// <summary> 
        /// 发送邮件 
        /// </summary> 
        public void Send()
        {
            SendMail("接收邮箱", "发送邮箱", "要发送内容", "主题", "要发送的邮箱的密码");
            if (mailmessage != null)
            {
                smtpclient = new SmtpClient();
                smtpclient.Credentials = new System.Net.NetworkCredential
(mailmessage.From.Address, password);//设置发件人身份的票据 
                //方法1
                //smtpclient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                //smtpclient.Host = "smtp." + mailmessage.From.Host;
                //try
                //{
                //    smtpclient.Send(mailmessage);
                //}
                //catch (System.Net.Mail.SmtpException ex)
                //{
                //    MessageBox.Show(ex.Message, "发送邮件出错");
                //}

------------------方法1可以。方法2有问题!!
                //方法2
                smtpclient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                smtpclient.Port = 587;//Gmail所使用的端口
                smtpclient.Host = "smtp.gmail.com";
                smtpclient.EnableSsl = true;//经过ssl加密
                object userState = mailmessage;
                try
                {
                    smtpclient.SendAsync(mailmessage, userState);
                    //smtpclient.Send(mailmessage);//这种更简单
                }
                catch (System.Net.Mail.SmtpException ex)
                {
                    MessageBox.Show(ex.Message, "发送邮件出错");
                }
            }
            MessageBox.Show("Mail sended");
        }

    }
}

posted on 2010-09-02 09:17  其实你不懂  阅读(277)  评论(0)    收藏  举报