utilizzare questa classe per inviare mail attraverso un account gmail:System.Net.Mail - tentando di inviare una mail con allegato a Gmail, ma funziona per i piccoli allegati solo
public class GmailAccount
{
public string Username;
public string Password;
public string DisplayName;
public string Address
{
get
{
return Username + "@gmail.com";
}
}
private SmtpClient client;
public GmailAccount(string username, string password, string displayName = null)
{
Username = username;
Password = password;
DisplayName = displayName;
client = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(Address, password)
};
}
public void SendMessage(string targetAddress, string subject, string body, params string[] files)
{
MailMessage message = new MailMessage(new MailAddress(Address, DisplayName), new MailAddress(targetAddress))
{
Subject = subject,
Body = body
};
foreach (string file in files)
{
Attachment attachment = new Attachment(file);
message.Attachments.Add(attachment);
}
client.Send(message);
}
}
Ecco un esempio di come lo uso:
GmailAccount acc = new GmailAccount("zippoxer", "******", "Moshe");
acc.SendMessage("[email protected]", "Hello Self!", "like in the title...", "C:\\822d14ah857.r");
l'ultimo parametro del metodo diSendMessage è la posizione di un attaccamento che voglio aggiungere.
Ho provato a inviare una mail con un allegato di 400 KB, ha funzionato benissimo (anche 900KB funziona). Ma poi ho provato a caricare un allegato di 4 MB, non ha funzionato. Provato 22 MB -> non ha funzionato troppo.
Ci dovrebbe essere un limite di 25 MB per messaggio in Gmail. L'oggetto e il corpo del mio messaggio sono quasi vuoti quindi non considerarli parte della dimensione del messaggio. Perché ho quel limite basso?
Funziona in un normale client di posta? – SLaks
Sì, ho dimenticato di dirlo. Ho appena caricato un file da 22 MB tramite www.gmail.com. –
C'è un messaggio di errore o l'e-mail viene inviata senza l'allegato? Stai eseguendo questo da un server o localmente? Puoi provare a testare più dimensioni di file per trovare un limite più preciso? (2MB? 4MB? La tecnica di ricerca binaria potrebbe funzionare) –