none
asp.net 发送邮件的问题 RRS feed

  • 问题

  • 1,asp.net发邮件给多个人时,在TO中使用分号分割每个邮件地址能不能?如果不能,应该怎么做?
    2,asp.net如何发送会议邀请形式的邮件?
    2009年2月12日 15:14

答案

  • ASP.NET 2.0 的 MaillMessage.To 屬性是 MailAddress 物件的集合,可以添加多個郵件位址,至於它內部怎麼做就不用管了。
    MVP 2009 (ASP.NET), MCPD: ASP.NET Developer 3.5, MCPD: Windows Developer 3.5, MCITP: Database Developer 2008, MCITP: Enterprise Administrator 不想被人認為是小白,就不要總是在做一堆會讓人認為是小白的事。
    2009年2月13日 4:27
  • 试试这个

                SmtpClient smtpClient = new SmtpClient();
                MailMessage message = new MailMessage();
                message.To.Add(new MailAddress("a1@b.c"));
                message.To.Add(new MailAddress("a2@b.c"));
                //在这里添加其他的mail地址

                //
                //在这里设置mail的内容啥的
                //

                //发送
                smtpClient.Send(message);


    微软认证程序开发专家:Web Developer (MCPD: Web Developer)
    2009年4月13日 7:46

全部回复

  • 1 看邮件服务器是否支持
    2 MIME标准中没有这种形式。如果你要发送邀请,在标题上写上“邀请”。

    MSMVP VC++
    2009年2月12日 20:15
    版主
  • 1 可以  smtp标准里面提及  而且必须实现

    2 如果你说的是 outlook 邀请   这个东西是通过操作  mail 的header 达成目的的

    以下为一个例子



    X-Message-Delivery: Vj0xLjE7dXM9MDtsPTA7YT0wO0Q9MTtTQ0w9MA==
    X-Message-Status: n:0
    X-SID-PRA: Wayne.WANG@cognizant.com
    X-Message-Info: JGTYoYF78jFtcjTxlaPuJaUTsmSHGOgINkR4vG59GEL7A2s4L2a66Hae3FNym/yscIGLlVx087I4meW3cRP14G0/uxyNquBa
    Received: from CTSINCALSXIB.cts.com ([203.99.210.21]) by col0-mc3-f13.Col0.hotmail.com with Microsoft SMTPSVC(6.0.3790.3959);
      Thu, 12 Feb 2009 17:51:26 -0800
    X-MimeOLE: Produced By Microsoft Exchange V6.5
    MIME-Version: 1.0
    Subject: sdasdasd
    Date: Fri, 13 Feb 2009 09:51:37 +0800
    Message-ID: <85AF9E6D8751574E9ED4676A2014F5BB11D930@ctscnshnsxub.cts.com>
    X-MS-Has-Attach:
    X-MS-TNEF-Correlator:
    Thread-Topic: sdasdasd
    Thread-Index: AcmNfZsF0ZbRUdDBTNON/O7AUgnvfw==
    From: <Wayne.WANG@cognizant.com>
    To: <blackshaman_Wayne@hotmail.com>
    Return-Path: Wayne.WANG@cognizant.com
    X-OriginalArrivalTime: 13 Feb 2009 01:51:26.0856 (UTC) FILETIME=[9517C080:01C98D7D]
    Content-class: urn:content-classes:calendarmessage
    Content-Type: text/calendar;
     method=REQUEST;
     name="meeting.ics"
    Content-Transfer-Encoding: 8bit



    你可以用outlook  给自己的油箱发几个  然后参考header的变化
    在outlook 的任意信件  右键选择  “message options”   就可以看到header
    Guitar Hero IV -- Singing Rock & Roll.
    2009年2月13日 1:56
  • ASP.NET 2.0 的 MaillMessage.To 屬性是 MailAddress 物件的集合,可以添加多個郵件位址,至於它內部怎麼做就不用管了。
    MVP 2009 (ASP.NET), MCPD: ASP.NET Developer 3.5, MCPD: Windows Developer 3.5, MCITP: Database Developer 2008, MCITP: Enterprise Administrator 不想被人認為是小白,就不要總是在做一堆會讓人認為是小白的事。
    2009年2月13日 4:27
  •  我写的邮件地址格式为:a@b.com; b@b.com; c@b.com
    代码是 MailAddress mailaddrTo = new MailAddress(TextBox1.Text.Trim());
    结果发过去的时候提示:The specified string is not in the form required for an e-mail address.
    2009年2月18日 2:40
  • try

    <blackshaman_Wayne@hotmail.com>;<xxxx@hotmail.com>
    梁赫群是榜样 赵正平是偶像 恩?还有个人么?
    2009年2月18日 3:13
  • 第一个能收到,第二个收不到,我用tostring一看,原来只有第一个的地址,没有第二个的地址
    2009年2月18日 6:21
  •   第一个能收到,第二个收不到,我用tostring一看,原来只有第一个的地址,没有第二个的地址。
    我的代码如下:

            string str = "会议地点:" + SessionAddress.Text.Trim() + "<br>";
            str += "开始时间:" + SessionStartDate.Text.Trim() + " " + SessionStartTime.SelectedItem.Text + "<br>";
            str += "结束时间:" + SessionCloseDate.Text.Trim() + " " + SessionCloseTime.SelectedItem.Text + "<br>";
            str += "会议议程:<br>" + SessionAgenda.Text.Trim().Replace("\r\n", "<br>") + "<br>";

            System.Net.Mail.SmtpClient mail = new System.Net.Mail.SmtpClient();
            mail.Host = MailClass.SMTP(); 
            mail.Credentials = new System.Net.NetworkCredential(MailClass.Usr(), MailClass.Pwd());
            System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
            MailAddress mailaddrFrom = new MailAddress(AD.CurrentUserMail());
            string to = SessionParticipator.Text.Trim().Replace(";", ";");
            MailAddress mailaddrTo = new MailAddress("<" + to.Replace(">;<", ",") + ">");

            message.From = mailaddrFrom;
            message.To.Add(mailaddrTo);
            message.Subject = "Meeting:" + SessionTopic.Text.Trim();
            message.Body = str;
            message.SubjectEncoding = System.Text.Encoding.GetEncoding("gb2312");
            message.BodyEncoding = System.Text.Encoding.GetEncoding("gb2312");
            message.IsBodyHtml = true;
            try
            {
                mail.Send(message);
            }
            catch (Exception err)
            {
                TextBox1.Text += err.ToString();
            }

    2009年2月18日 6:31
  • 没人理我??
    2009年2月19日 0:38
  • 试试这个

                SmtpClient smtpClient = new SmtpClient();
                MailMessage message = new MailMessage();
                message.To.Add(new MailAddress("a1@b.c"));
                message.To.Add(new MailAddress("a2@b.c"));
                //在这里添加其他的mail地址

                //
                //在这里设置mail的内容啥的
                //

                //发送
                smtpClient.Send(message);


    微软认证程序开发专家:Web Developer (MCPD: Web Developer)
    2009年4月13日 7:46
  • /// /// 外发邮件支持群发 /// /// 发件人 /// 群发多用户使用"|"格开地址 /// 邮件主题 /// 邮件内容 /// 是否发送成功 public static bool SendMail(string MessageSubject, string MessageBody) { MailMessage message = new MailMessage(); List mailAll = ClientDatumDAL.emailService.getMailALL(); foreach (ClientDatum m in mailAll) { message.To.Add(m.userEmail); } //message.To.Add("xxxxxchychww1@xxxx.com"); message.Subject = MessageSubject; message.Body = MessageBody; message.IsBodyHtml = true; //是否为html格式 message.Priority = MailPriority.High; //发送邮件的优先等级 SmtpClient sc = new SmtpClient(); try { sc.Send(message); //发送邮件 } catch(Exception ex) { Console.Write(ex.Message); return false; } return true; }
    2009年5月26日 8:55
  •   第一个能收到,第二个收不到,我用tostring一看,原来只有第一个的地址,没有第二个的地址。
    我的代码如下:

            string str = "会议地点:" + SessionAddress.Text.Trim() + "<br>";
            str += "开始时间:" + SessionStartDate.Text.Trim() + " " + SessionStartTime.SelectedItem.Text + "<br>";
            str += "结束时间:" + SessionCloseDate.Text.Trim() + " " + SessionCloseTime.SelectedItem.Text + "<br>";
            str += "会议议程:<br>" + SessionAgenda.Text.Trim().Replace("\r\n", "<br>") + "<br>";

            System.Net.Mail.SmtpClient mail = new System.Net.Mail.SmtpClient();
            mail.Host = MailClass.SMTP(); 
            mail.Credentials = new System.Net.NetworkCredential(MailClass.Usr(), MailClass.Pwd());
            System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
            MailAddress mailaddrFrom = new MailAddress(AD.CurrentUserMail());
            string to = SessionParticipator.Text.Trim().Replace(";", ";");
            MailAddress mailaddrTo = new MailAddress("<" + to.Replace(">;<", ",") + ">");

            message.From = mailaddrFrom;
            message.To.Add(mailaddrTo);
            message.Subject = "Meeting:" + SessionTopic.Text.Trim();
            message.Body = str;
            message.SubjectEncoding = System.Text.Encoding.GetEncoding("gb2312");
            message.BodyEncoding = System.Text.Encoding.GetEncoding("gb2312");
            message.IsBodyHtml = true;
            try
            {
                mail.Send(message);
            }
            catch (Exception err)
            {
                TextBox1.Text += err.ToString();
            }

    MailAddress(string mailstr)方法不懂得把多个mail格式的的字符串自动转换成 多个 MailAddress 对象,要自己写代码分成多个mail string,再转换成MailAddress.
    试试下面的方法:

    上面粗体字部分代码去掉,换成:
        string[] tos=SessionParticipator.Text.Trim().split(';');
        for(int i=0;i<tos.Length;i++)
        {
            message.To.Add(new MailAddress(tos[i]));
        }




    2009年10月23日 4:12