Как отправить MimeMessage - PullRequest
       15

Как отправить MimeMessage

0 голосов
/ 24 октября 2019

Могу ли я узнать, как я могу отправить MimeMessage?

Ниже приведен мой фрагмент кода:

MimeMessage eml = MimeMessage.Load(savedEmlFullFilePath);
MimeMessage toSend = Reply(eml,true); //to send out this message

public static MimeMessage Reply(MimeMessage message, bool replyToAll)
{
    var reply = new MimeMessage();

    // reply to the sender of the message
    if (message.ReplyTo.Count > 0)
    {
        reply.To.AddRange(message.ReplyTo);
    }
    else if (message.From.Count > 0)
    {
        reply.To.AddRange(message.From);
    }
    else if (message.Sender != null)
    {
        reply.To.Add(message.Sender);
    }

    if (replyToAll)
    {
        reply.To.AddRange(message.To);
        reply.Cc.AddRange(message.Cc);
    }

    // set the reply subject
    if (!message.Subject.StartsWith("Re:", StringComparison.OrdinalIgnoreCase))
        reply.Subject = "Re:" + message.Subject;
    else
        reply.Subject = message.Subject;

    // construct the In-Reply-To and References headers
    if (!string.IsNullOrEmpty(message.MessageId))
    {
        reply.InReplyTo = message.MessageId;
        foreach (var id in message.References)
            reply.References.Add(id);
        reply.References.Add(message.MessageId);
    }

    // quote the original message text
    using (var quoted = new StringWriter())
    {
        var sender = message.Sender ?? message.From.Mailboxes.FirstOrDefault();

        quoted.WriteLine("On {0}, {1} wrote:", message.Date.ToString("f"), !string.IsNullOrEmpty(sender.Name) ? sender.Name : sender.Address);
        using (var reader = new StringReader(message.TextBody))
        {
            string line;

            while ((line = reader.ReadLine()) != null)
            {
                quoted.Write("> ");
                quoted.WriteLine(line);
            }
        }

        reply.Body = new TextPart("plain")
        {
            Text = quoted.ToString()
        };
    }

    return reply;
}

Редактировать: Также хотел бы знать, если этоможно проанализировать MimeMessage в EmailMessage, чтобы я мог отправить его как ResponseMessage, используя EWS ...

1 Ответ

0 голосов
/ 24 октября 2019

Из README MailKit:

using (var client = new SmtpClient ()) {
    // For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS)
    client.ServerCertificateValidationCallback = (s,c,h,e) => true;

    client.Connect ("smtp.server.com", 587, false);

    // Note: only needed if the SMTP server requires authentication
    client.Authenticate ("username", "password");

    client.Send (message);
    client.Disconnect (true);
}
...