5

在 .NET 中,我可以使用我拥有的 AD 组的身份发送电子邮件吗?

我当前的代码:

        using (var smtp = new SmtpClient("smtp.somecompany.com"))
        {
            smtp.Credentials = CredentialCache.DefaultNetworkCredentials;
            var mail = new MailMessage("mygroup@somecompany.com", recipients)
            {
                ...
            };

            smtp.Send(mail);
        }

我得到

System.Net.Mail.SmtpException:邮箱不可用。服务器响应为:5.7.1 客户端无权作为此发件人发送

我知道我可以通过使用以其他用户身份发送

smtp.Credentials = new NetworkCredential(...)

并通过名称/密码对。

但是,AD 组没有密码,我认为组别名甚至不能算作用户名。

那么是否可以作为组发送电子邮件?

4

4 回答 4

1

AD 组是安全对象,与电子邮件没有直接关系。例如,如果您有一个开发组,并且您希望开发组中的任何人都可以访问该邮箱,则可以使用 Exchange 设置一个 AD 组中的任何人都可以访问的共享邮箱。也可以将该邮箱的传出地址设置为 dev@yourdomain.com。

当您使用示例中的代码创建共享邮箱时,它将正常工作。

于 2013-11-12T16:53:39.873 回答
1

如果您能够在内部(您的组织用户)发送带有单个用户电子邮件 ID 的电子邮件,但不能使用组电子邮件 ID,请检查您是否为组电子邮件 ID 使用了正确的 SMTP 地址(在 Outlook 中检查此电子邮件的属性)。

如上一个答案中所述,与电子邮件没有直接关系的广告组。您可以创建联系人(电子邮件 ID 但没有邮箱)和用户(电子邮件 ID 和邮箱)。

在java中我正在使用:

        String SMTP_HOST_NAME = "exchange_server";
        String SMTP_AUTH_USER = "mygroup@mydomain.com";
        String SMTP_AUTH_PWD  = "";

        Properties props = new Properties();
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.host", SMTP_HOST_NAME);
        props.put("mail.smtp.auth", "false");

注意:请检查 SMTP_AUTH_PWD 是否为空白,并且 mail.smtp.auth 是否为 false。

此外,检查邮件中继选项,专门用于发送到外部域的邮件:

邮件中继选项:联系您的 MS-exchange 团队为您的服务器启用此选项。

帮助链接: https ://confluence.atlassian.com/display/CONFKB/550+5.7.1+Unable+to+Relay+Mail+From+Exchange+Server

启用此选项后,可能所有用户都无法向外部域发送电子邮件,这取决于您的公司政策。因此,在您的应用程序成功发送邮件到 MS-Exchange 后,它可以在电子邮件安全设备(如 cisco Ironport)中被阻止。希望这会有所帮助。

于 2013-11-15T14:34:00.373 回答
0

在 .NET 中,我可以使用我拥有的 AD 组的身份发送电子邮件吗?

好吧。您必须在 AD 中创建/选择一个用户,然后将该用户分配给启用邮件的通用安全组。确保为该组分配一个电子邮件地址。然后在 .net 代码中,您必须作为用户之一进行身份验证,但将 mail.from 更改为启用邮件的通用安全组电子邮件地址。现在,如果有人回复电子邮件,则消息将转到启用邮件的通用安全组,并依次转发给组内的所有用户。Exchange 需要身份验证,因此您可以选择启用邮件的安全组中的任何人作为身份验证者。

http://technet.microsoft.com/en-us/library/bb123805(v=exchg.141).aspx

于 2013-11-14T21:37:18.200 回答
-1
MailMessage mail = new MailMessage();
mail.From = new System.Net.Mail.MailAddress("mygroup@somecompany.com");

// The important part -- configuring the SMTP client
SmtpClient smtp = new SmtpClient();
smtp.Port = 587;   // [1] You can try with 465 also, I always used 587 and got success
smtp.EnableSsl = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network; // [2] Added this
smtp.UseDefaultCredentials = false; // [3] Changed this
smtp.Credentials = new NetworkCredential(mail.From,  "password_here");  // [4] Added this. Note, first parameter is NOT string.
smtp.Host = "smtp.somecompany.com";            

//recipient address
mail.To.Add(new MailAddress("yyyy@xxxx.com"));

//Formatted mail body
mail.IsBodyHtml = true;


mail.Body = st;
smtp.Send(mail);

请尝试一下,并给出您的端口号

如何在 ASP.NET C# 中发送电子邮件

毕竟检查这个链接..

于 2013-11-13T11:21:07.600 回答