Envoi d'emails avec des pièces jointes à partir de C#, les pièces jointes arrivent à la Partie 1.2 dans Thunderbird
J'ai une application en C# qui mail feuille de calcul Excel des rapports par le biais d'un serveur Exchange 2007 en utilisant le protocole SMTP. Ces arriver amende pour les utilisateurs d'Outlook, mais pour Thunderbird et les utilisateurs de Blackberry, les pièces jointes ont été renommés en tant que "Partie 1.2".
J'ai trouvé ce l'article qui décrit le problème, mais ne semble pas me donner une solution de contournement. Je n'ai pas de contrôle du serveur Exchange ne peut donc pas procéder à des modifications. Est-ce que je peux faire sur le C# fin? J'ai essayé d'utiliser des noms de fichiers courts et de codage HTML pour le corps, mais ne fait une différence.
Mon envoi de mail code est simplement ceci:
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);
}
Merci pour toute aide.
- Avez-vous essayé de définir/modifier
Attachment.Name
propriété? - Non, je n'ai pas "Obtient ou définit le type de contenu MIME valeur de nom", avez-vous des suggestions quant à ce que la valeur de l'essayer? Merci.
- Le
Name
est affiché sous le nom de la pièce jointe lors de l'e-mail avec la pièce jointe est reçu. De sorte que vous pouvez essayer n'importe quelle valeur.
Vous devez vous connecter pour publier un commentaire.
Code Simple pour envoyer des e-mail avec la pièce jointe.
source: http://www.coding-issues.com/2012/11/sending-email-with-attachments-from-c.html
using(SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com")) { //code goes here using(MailMessage mail = new MailMessage()){ //code goes here } }
Explicitement remplissant le ContentDisposition champs a fait le tour.
BTW, dans le cas de Gmail, vous pouvez avoir des exceptions sur le protocole ssl " secure ou encore le port!
FileInfo
objet pour obtenirCreationTime
,LastWriteTime
, etLastAccessTime
propriétés? Vous êtes en train de créer un pour obtenir laLength
propriété de toute façon.Ici est un simple envoi de mail code de l'attachement
Lire plus L'envoi d'e-mails avec pièce jointe en C#
Compléter la solution de Ranadheer, à l'aide de Serveur.MapPath pour localiser le fichier
Server.MapPath
viennent et quand doit-il être utilisé?Essayez ceci:
J'ai essayé le code fourni par Ranadheer Reddy (ci-dessus) et il a très bien fonctionné. Si vous utilisez un ordinateur de l'entreprise qui a une restriction de serveur que vous pourriez avoir besoin de changer le port SMTP 25 et laisser votre nom d'utilisateur et mot de passe vides, car ils seront remplissage automatique par votre administrateur.
À l'origine, j'ai essayé d'utiliser EASendMail de la nugent gestionnaire de paquet, seulement pour réaliser que c'est un de payer pour la version d'essai de 30 jours. Ne pas de la taille de votre temps avec elle, sauf si vous envisagez d'acheter. J'ai remarqué que le programme a couru beaucoup plus vite à l'aide de EASendMail, mais pour moi, libre de fausses rapide.
Juste mes 2 cents.
J'ai fait un petit code pour le faire et je veux le partager avec vous.
Ici le code principal: