首页新闻找找看学习计划

asp.net网站关于邮件发送的问题

0
悬赏园豆:10 [待解决问题]

现有一项目需实现邮件发送功能,前台用户下订单后,就自动为其发送一封邮件,上面显示的数据就是用户购买的商品信息。如何实现?

小生求指教的主页 小生求指教 | 初学一级 | 园豆:68
提问于:2013-07-17 09:30
< >
分享
所有回答(5)
0
        /// <summary>
        /// 发送邮件,附加附件
      /// </summary>
        /// <returns></returns>
        public static bool SendSMTPEMail(string strSmtpServer, string strFrom, string strFromPass, string strto, string strSubject, string strBody)
        {
            try
            {
                System.Net.Mail.SmtpClient client = new SmtpClient(strSmtpServer);
                client.Timeout = 9999999;
                client.UseDefaultCredentials = false;
                client.Credentials = new System.Net.NetworkCredential(strFrom, strFromPass);
                client.DeliveryMethod = SmtpDeliveryMethod.Network;

                System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(strFrom, strto, strSubject, strBody);
                //System.Net.Mail.Attachment attachment = new System.Net.Mail.Attachment(excelPath);
                
                //message.Attachments.Add(attachment);
                message.BodyEncoding = System.Text.Encoding.UTF8;
                message.IsBodyHtml = true;
                client.Send(message);
            }
            catch (Exception ex)
            {
                return false;
            }
            return true;
        }
只会造轮子 | 园豆:2448 (老鸟四级) | 2013-07-17 10:30
0

那你在订单保存时,调用下该方法就可以了吧~

幻天芒 | 园豆:36522 (高人七级) | 2013-07-17 13:07
0
你得需要一个SMTP服务器,然后通过
SmtpClient类使用SMTP服务器的地址发送邮件到你的目的地址
Zachary_Fan | 园豆:762 (小虾三级) | 2013-07-17 16:23
0

首先要引用这两个命名空间: using System.Net.Mail; using System.Net;

发邮件代码如下:

MailMessage mailMessage = new MailMessage();
string strBody;

//发送地址
mailMessage.From = new MailAddress(“hello@ap.xxylhg.com”);

//接收地址
mailMessage.To.Add(“745148385@qq.com”);

//邮件标题
mailMessage.Subject = “test a mail”;

//邮件内容
strBody = “jomig this is test mail dont block”;
mailMessage.Body = strBody;

SmtpClient smtpClient = new SmtpClient();
//smtpClient.EnableSsl = true;
//Smtp服务器
smtpClient.Host = “mail.ap.xxylhg.com”;
//Smtp服务器发送端口
smtpClient.Port = 25;
//发送用户名及密码
smtpClient.Credentials = new NetworkCredential(“hello@ap.xxylhg.com”, “邮件密码”);
try
{
    //调用发送函数
    smtpClient.Send(mailMessage);
    Label1.Text = “ok”;
}
catch (Exception ee)
{
    Label1.Text = “false” + ee.Message;
}
finally
{
    Label1.Text += “<br />Complete.”;
}

使用过程中遇到了两个典型的错误,这是样解决的。

1、指定字符串与电子邮件地址所要求的形式不符。邮件填写的都是正确的,我的做法是删除了web.config中的这一段:

    <system.net>
        <mailSettings>
            <smtp from=”xxylhg.com”>
    <network host=”mail.ap.xxylhg.com” password=”密码” userName=”hello@ap.xxylhg.com” />
   </smtp>
        </mailSettings>
    </system.net>

也许是程序中新给的设置和web.config中的配置冲突。目前还不太清楚到底是什么原因,但是删掉以后,程序确实正常了。

经过再次测试(测试环境Asp.Net4.0),当在<system.net>节中配置好之后,在SmtpClient smtpClient = new SmtpClient();行之后就可以不用再次设置参数,直接调用smtpClient.Send(mailMessage)可以成功发送邮件,再次验证这里的配置和程序中的配置是同一个功能。

2、在邮件标头中找到无效的字符:“工”

还是问题1中给出的配置段,原来在<smtp from=”xxylhg.com”>这里填写的是汉字,“工”是最后一个字,当我把这几个汉字全改成字母以后,问题就消失了。这就导致,原来我们想在邮件的发件人里写上汉字的全名会失败而只能写字母,如果确实非常想要写上汉字,只好在前面开始的定义行:

//发送地址
mailMessage.From = new MailAddress(“hello@ap.xxylhg.com”);  //注意引号要改成英文的;

可将汉字的发件人名称加在这里:
mailMessage.From = new MailAddress(hello@ap.xxylhg.com, “我是发件人”);//注意引号要改成英文的;

 

yujinchao | 园豆:248 (菜鸟二级) | 2013-07-18 09:19
0

good.

吕津 | 园豆:31 (初学一级) | 2013-08-05 01:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册