Diverse persone significano cose diverse quando dicono "avanti", quindi credo che fornirò le risposte ai diversi significati a cui posso pensare.
1. Inoltra (rinvia) il messaggio senza alcuna modifica.
Con "nessuna modifica", non intendo letteralmente nessuna modifica ai dati del messaggio non elaborato. Il modo per farlo è:
var message = FetchMessageFromImapServer();
using (var client = new SmtpClient()) {
client.Connect ("smtp.example.com", 465, true);
client.Authenticate ("username", "password");
var sender = new MailboxAddress ("My Name", "[email protected]");
var recipients = new [] { new MailboxAddress ("John Smith", "[email protected]") };
// This version of the Send() method uses the supplied sender and
// recipients rather than getting them from the message's headers.
client.Send (message, sender, recipients);
client.Disconnect (true);
}
Di solito le persone non intendono questo tipo di "inoltro", però. Se vogliono inviare nuovamente, di solito useranno il prossimo metodo di invio.
2. Inoltra (rinvia) il messaggio nel modo standard.
var message = FetchMessageFromImapServer();
// clear the Resent-* headers in case this message has already been Resent...
message.ResentSender = null;
message.ResentFrom.Clear();
message.ResentReplyTo.Clear();
message.ResentTo.Clear();
message.ResentCc.Clear();
message.ResentBcc.Clear();
// now add our own Resent-* headers...
message.ResentFrom.Add (new MailboxAddress ("MyName", "[email protected]"));
message.ResentReplyTo.Add (new MailboxAddress ("MyName", "[email protected]"));
message.ResentTo.Add (new MailboxAddress ("John Smith", "[email protected]"));
message.ResentMessageId = MimeUtils.GenerateMessageId();
message.ResentDate = DateTimeOffset.Now;
using (var client = new SmtpClient()) {
client.Connect ("smtp.example.com", 465, true);
client.Authenticate ("username", "password");
// The Send() method will use the Resent-From/To/Cc/Bcc headers if
// they are present.
client.Send (message);
client.Disconnect (true);
}
3. Inoltra il messaggio collegandolo (in tutto) per un nuovo messaggio, il modo in cui alcuni client di posta potrebbero farlo.
var messageToForward = FetchMessageFromImapServer();
// construct a new message
var message = new MimeMessage();
message.From.Add (new MailboxAddress ("MyName", "[email protected]"));
message.ReplyTo.Add (new MailboxAddress ("MyName", "[email protected]"));
message.To.Add (new MailboxAddress ("John Smith", "[email protected]"));
// now to create our body...
var builder = new BodyBuilder();
builder.TextBody = "Hey John,\r\n\r\nHere's that message I was telling you about...\r\n";
builder.Attachments.Add (new MessagePart { Message = messageToForward });
message.Body = builder.ToMessageBody();
using (var client = new SmtpClient()) {
client.Connect ("smtp.example.com", 465, true);
client.Authenticate ("username", "password");
client.Send (message);
client.Disconnect (true);
}
risposta Amazin. Molte grazie! –
nessun problema, felice di aiutare! – jstedfast
@jstedfast Il metodo 3 come la maggior parte dei client, 'cita il messaggio originale' in una nuova risposta? Questo dovrebbe essere aggiunto al nuovo fantastico [http://www.mimekit.net] (http://www.mimekit.net) (Sembra buono! Ancora stranamente familiare) –