C#:将电子邮件发送到个人邮件和群组邮件(不适用于群组邮件)

时间:2012-04-30 10:09:26

标签: c# .net email

在ASP.NET / C#应用程序(mvc3)中,我希望能够发送Mail。

这是我正在使用的功能:

    public static void SendEmail(string fromEmail, string fromName, string toEmail, string toName, string subject, string emailBody, bool isBodyHtml, string[] attachments, string emailServer, int portNumber, string loginName, string loginPassword)
    {
        // setup email header
        System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage();

        // Set the message sender
        // sets the from address for this e-mail message.
        mailMessage.From = new System.Net.Mail.MailAddress(fromEmail, fromName);
        // Sets the address collection that contains the recipients of this e-mail message.
        string[] toEmailList = toEmail.Split(',');
        string[] toNameList = toName.Split(',');
        for (int i = 0;i<toEmailList.Length;++i) 
        {
            mailMessage.To.Add(new System.Net.Mail.MailAddress(toEmailList[i],toNameList[i]));
        }
      //  mailMessage.To.(new System.Net.Mail.MailAddress(toEmail, toName));

        // sets the message subject.
        mailMessage.Subject = subject;
        // sets the message body.
        mailMessage.Body = emailBody;
        // sets a value indicating whether the mail message body is in Html.
        // if this is false then ContentType of the Body content is "text/plain".
        mailMessage.IsBodyHtml = isBodyHtml;

        // add all the file attachments if we have any
        if (attachments != null && attachments.Length > 0)
            foreach (string _Attachment in attachments)
                mailMessage.Attachments.Add(new System.Net.Mail.Attachment(_Attachment));

        // SmtpClient Class Allows applications to send e-mail by using the Simple Mail Transfer Protocol (SMTP).
        System.Net.Mail.SmtpClient _SmtpClient = new System.Net.Mail.SmtpClient(emailServer);

        //Specifies how email messages are delivered. Here Email is sent through the network to an SMTP server.
        _SmtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;

        // Some SMTP server will require that you first authenticate against the server.
        // Provides credentials for password-based authentication schemes such as basic, digest, NTLM, and Kerberos authentication.
        System.Net.NetworkCredential _NetworkCredential = new System.Net.NetworkCredential(loginName, loginPassword);
        _SmtpClient.UseDefaultCredentials = false;

        _SmtpClient.Credentials = _NetworkCredential;
        _SmtpClient.Port = portNumber;
        //Let's send it
        try
        {
            _SmtpClient.Send(mailMessage);
            mailMessage.Dispose();
            _SmtpClient = null;
        }
        catch (Exception ex)
        {
            throw ex;
        }

    }

一切都适用于个人电子邮件。

问题是:

如果其中一封TO电子邮件(我发送给它的电子邮件)是一组电子邮件,则不会发送给它。

通过群组电子邮件,我的意思是一个附有多个联系人的电子邮件,当有人将其发送到该电子邮件时,他们都会收到该消息。

群组电子邮件的示例

如果有人发送电子邮件至MyFamily@somedomain.com,我的全家都会收到。

如何使其适用于所有类型的电子邮件,而不仅仅是个人电子邮件。

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我的个人Google Apps域遇到了同样的问题。但问题在于组电子邮件的配置,而不是在c#代码中。

您是否检查了群组电子邮件的权限?您通常可以定义谁可以向此群组电子邮件发送电子邮件。因此,您必须使用正确的电子邮件地址或重新配置权限。通常,该组的所有成员都可以向该组发送电子邮件。