在.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组没有密码,我认为组别名甚至不算作用户名。
那么可以根据群组发送电子邮件吗?
答案 0 :(得分:1)
AD群组是安全对象,与电子邮件没有直接关系。例如,如果您有一个开发组,并且您希望开发组中的任何人访问该邮箱,则可以通过交换设置AD组中的任何人都可以访问的共享邮箱。也可以将该邮箱的发送地址设置为dev@yourdomain.com。
使用示例中的代码创建共享邮箱可以正常工作。
答案 1 :(得分:1)
如果您可以在内部(组织用户)发送包含单用户电子邮件ID的电子邮件,但不能使用组电子邮件ID发送电子邮件,请检查您是否使用了组电子邮件ID的正确SMTP地址(请检查此电子邮件的属性)外表)。
如前面的答案所述,AD群组与电子邮件没有直接关系。您可以创建通讯录(电子邮件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交换团队联系,为您的服务器启用此选项。
帮助链接: https://confluence.atlassian.com/display/CONFKB/550+5.7.1+Unable+to+Relay+Mail+From+Exchange+Server
启用此选项后,可能是所有用户都无法向外部域发送电子邮件,这取决于您的公司政策。因此,在从您的应用程序发送到MS-Exchange的成功邮件之后,它可以在邮件安全设备(如cisco ironport)中被阻止。希望这会有所帮助。
答案 2 :(得分:0)
在.NET中,我可以使用我拥有的AD群组的身份发送电子邮件吗?
好吧。您必须在AD中创建/选择用户,然后将该用户分配给启用邮件的通用安全组。确保为该组分配电子邮件地址。然后在.net代码中,您必须作为其中一个用户进行身份验证,但将mail.from更改为已启用邮件的通用安全组电子邮件地址。现在,如果有人回复该电子邮件,该邮件将转到已启用邮件的通用安全组,并将转发给该组内的所有用户。 Exchange需要身份验证,因此您可以选择已启用邮件的安全组中的任何人作为身份验证器。
http://technet.microsoft.com/en-us/library/bb123805(v=exchg.141).aspx
答案 3 :(得分:-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);
请尝试一下,并提供您的问题的端口号
How to send email in ASP.NET C#
毕竟检查此链接..