J'ai une classe qui envoie un email (MailMessage) mais j'obtiens l'erreur suivante:
"La chaîne spécifiée n'est pas sous la forme requise pour un sujet."
Existe-t-il une méthode pratique de dandy pour désinfecter les chaînes ou dois-je écrire la mienne?
Personnellement, je ne l'ai pas essayé, mais selon ceci , vous avez seulement besoin de:
subject = subject.Replace('\r', ' ').Replace('\n', ' ');
ou quelque chose d'équivalent.
En interne, la classe MailMessage
vérifiera le sujet avec:
if (value != null && MailBnfHelper.HasCROrLF(value))
{
throw new ArgumentException(SR.GetString(SR.MailSubjectInvalidFormat));
}
Donc, la seule limitation (pour le moment) se trouve être la présence de CR
ou LF
.
De plus, il y a une limite de 168 caractères, vous devriez donc vérifier cela aussi.
UPDATE: désolé c'est une connerie complète:) Cela a dû être un saut de ligne dans mon cas.
J'ai essayé pour .NET 2.0 et 4.5 et cela permet d'envoyer des sujets plus longs que 168 caractères ... J'ai utilisé Papercut pour vérifier le courrier.
Pour VB.NET
subject = subject.Replace(vbNewLine, "")
Je sais que cela a déjà répondu, mais ça va:
Tout d’abord, vous devez découper l’objet, puis prendre en compte la longueur maximale de l’objet ( Quelle est la longueur maximale de l’objet du message? ):
subject = subject.Trim();
subject = subject .Substring(0, Math.Min(subject .Length, 78));
Cela supprimera toutes les nouvelles lignes ou les espaces vides au début et à la fin. Ensuite, la sous-chaîne est utilisée pour limiter la longueur du sujet.