Wenn Sie einen Microsoft Exchange 2007 E-Mail-Server haben, können Sie dessen Webservice Richtung zum Senden von E-Mails. Der Webdienst selbst ist etwas seltsam, aber wir konnten die Seltsamkeiten kapseln und dafür sorgen, dass er genau wie unsere SMTP-Klasse funktioniert.
Zunächst müssen Sie einen Verweis auf den Exchange-Webdienst wie folgt erstellen: https://mail.yourwebserver.com/EWS/Services.wsdl
Hier ist ein Beispiel:
public bool Send(string From, MailAddress[] To, string Subject, string Body, MailPriority Priority, bool IsBodyHTML, NameValueCollection Headers)
{
// Create a new message.
var message = new MessageType { ToRecipients = new EmailAddressType[To.Length] };
for (int i = 0; i < To.Length; i++)
{
message.ToRecipients[i] = new EmailAddressType { EmailAddress = To[i].Address };
}
// Set the subject and sensitivity properties.
message.Subject = Subject;
message.Sensitivity = SensitivityChoicesType.Normal;
switch (Priority)
{
case MailPriority.High:
message.Importance = ImportanceChoicesType.High;
break;
case MailPriority.Normal:
message.Importance = ImportanceChoicesType.Normal;
break;
case MailPriority.Low:
message.Importance = ImportanceChoicesType.Low;
break;
}
// Set the body property.
message.Body = new BodyType
{
BodyType1 = (IsBodyHTML ? BodyTypeType.HTML : BodyTypeType.Text),
Value = Body
};
var items = new List<ItemType>();
items.Add(message);
// Create a CreateItem request.
var createItem = new CreateItemType()
{
MessageDisposition = MessageDispositionType.SendOnly,
MessageDispositionSpecified = true,
Items = new NonEmptyArrayOfAllItemsType
{
Items = items.ToArray()
}
};
var imp = new ExchangeImpersonationType
{
ConnectingSID = new ConnectingSIDType { PrimarySmtpAddress = From }
};
esb.ExchangeImpersonation = imp;
// Call the CreateItem method and get its response.
CreateItemResponseType response = esb.CreateItem(createItem);
// Get the items returned by CreateItem.
ResponseMessageType[] itemsResp = response.ResponseMessages.Items;
foreach (ResponseMessageType type in itemsResp)
{
if (type.ResponseClass != ResponseClassType.Success)
return false;
}
return true;
}
0 Stimmen
In Ihrem zweiten Absatz sollten Sie einen Link zu den Belegen angeben, auf die Sie sich beziehen.
1 Stimmen
Du meine Güte: social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/ Das hat also eindeutig keine hohe Priorität.
0 Stimmen
Tatsächlich war es für uns eine hohe Priorität, dies für .NET 4.0 zu beheben, und wir haben speziell in diesem Bereich von System.Net.Mail erhebliche Verbesserungen vorgenommen. Siehe meine Antwort unten
0 Stimmen
Sogar der .NET4 SmtpClient funktioniert nicht mit der aktuellen Version von MailSlurper - er verursacht Verbindungsabbrüche und eine Überlastung der Warteschlange - so schlecht, dass er im Grunde nicht verwendet werden kann. Man könnte versuchen, MailSlurper die Schuld zu geben, aber das scheint ziemlich unwahrscheinlich - github.com/mailslurper/mailslurper/issues/49