Ich habe eine C # -Anwendung, die Excel-Tabellenberichte über einen Exchange 2007-Server mit SMTP per E-Mail versendet. Diese kommen für Outlook-Benutzer gut an, aber für Thunderbird- und Blackberry-Benutzer wurden die Anhänge in "Teil 1.2" umbenannt.
Ich habe diesen Artikel gefunden, der das Problem beschreibt, mir aber keine Problemumgehung zu bieten scheint. Ich habe keine Kontrolle über den Exchange-Server und kann dort keine Änderungen vornehmen. Kann ich am C # -Ende etwas tun? Ich habe versucht, kurze Dateinamen und HTML-Codierung für den Körper zu verwenden, aber keiner hat einen Unterschied gemacht.
Mein Mail-Sendecode lautet einfach:
public static void SendMail(string recipient, string subject, string body, string attachmentFilename)
{
SmtpClient smtpClient = new SmtpClient();
NetworkCredential basicCredential = new NetworkCredential(MailConst.Username, MailConst.Password);
MailMessage message = new MailMessage();
MailAddress fromAddress = new MailAddress(MailConst.Username);
// setup up the host, increase the timeout to 5 minutes
smtpClient.Host = MailConst.SmtpServer;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = basicCredential;
smtpClient.Timeout = (60 * 5 * 1000);
message.From = fromAddress;
message.Subject = subject;
message.IsBodyHtml = false;
message.Body = body;
message.To.Add(recipient);
if (attachmentFilename != null)
message.Attachments.Add(new Attachment(attachmentFilename));
smtpClient.Send(message);
}
Vielen Dank für jede Hilfe.
c#
email
smtp
attachment
Jon
quelle
quelle
Attachment.Name
Eigenschaft zu definieren / zu ändern ?Name
wird als Name des Anhangs angezeigt, wenn die E-Mail mit dem Anhang empfangen wird. Sie können also einen beliebigen Wert ausprobieren.Antworten:
Einfacher Code zum Senden von E-Mails mit Anhang.
Quelle: http://www.coding-issues.com/2012/11/sending-email-with-attachments-from-c.html
quelle
using(SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com")) { //code goes here using(MailMessage mail = new MailMessage()){ //code goes here } }
Das explizite Ausfüllen der ContentDisposition-Felder hat den Trick getan.
Übrigens , im Fall von Google Mail können Sie einige Ausnahmen über SSL Secure oder sogar Port haben!
quelle
FileInfo
Objekt zu erhaltenCreationTime
,LastWriteTime
undLastAccessTime
Eigenschaften? Sie erstellen eine, um dieLength
Immobilie trotzdem zu erhalten.Hier ist ein einfacher Mail-Sendecode mit Anhang
Lesen Sie mehr Senden von E-Mails mit Anhang in C #
quelle
Vervollständigen der Ranadheer-Lösung mithilfe von Server.MapPath zum Auffinden der Datei
quelle
Server.MapPath
es und wann sollte es verwendet werden?quelle
Ich habe dafür einen kurzen Code erstellt und möchte ihn mit Ihnen teilen.
Hier der Hauptcode:
quelle
Versuche dies:
quelle
Ich habe den von Ranadheer Reddy (oben) bereitgestellten Code ausprobiert und er hat großartig funktioniert. Wenn Sie einen Firmencomputer mit einem eingeschränkten Server verwenden, müssen Sie möglicherweise den SMTP-Port auf 25 ändern und Ihren Benutzernamen und Ihr Kennwort leer lassen, da diese automatisch von Ihrem Administrator ausgefüllt werden.
Ursprünglich habe ich versucht, EASendMail vom nugent-Paketmanager zu verwenden, nur um festzustellen, dass es sich um eine kostenpflichtige Version mit 30-Tage-Testversion handelt. Lassen Sie Ihre Zeit nicht hinter sich, es sei denn, Sie planen, es zu kaufen. Ich bemerkte, dass das Programm mit EASendMail viel schneller lief, aber für mich trumpfte kostenlos schnell.
Nur meine 2 Cent wert.
quelle