0

Microsoft Word 2007 では、文書を電子メールの本文として送信できます。テキスト、写真、フォーマット。C#でWordの「受信者にメールを送信」オプションを使用する方法はありますか? 可能であれば、どうすればそれを行うことができますか?前もって感謝します!

4

1 に答える 1

0

これを行うには、Microsoft Word アドインを作成する必要があります。このチェック マイクロソフト サイトの基本については、Visual Studio を使用した Word ソリューションを参照してください。

そして、あなたの質問を解決するために以下のようなことをすることができます. ドキュメントを保存すると、コードによってメールが送信されます。ワードアドインを使用すると、キャッチして独自の処理を実行できるイベントがたくさんあります。または、ボタンをクリックしてメールを送信する場合は、独自のボタンを追加できます。

void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    this.Application.DocumentBeforeSave += new Microsoft.Office.Interop.Word.ApplicationEvents4_DocumentBeforeSaveEventHandler(DocumentSave);
}

void DocumentSave(Word.Document doc, ref bool test, ref bool test2)
{
    if(doc is Word.Document)
    {                
        SendMailWithAttachment(doc);
    }
}

public void SendMailWithAttachment(Word.Document doc)
{
    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);

    var attachmentFilename = doc.FullName

    if (attachmentFilename != null)
    {
        Attachment attachment = new Attachment(attachmentFilename, MediaTypeNames.Application.Octet);
        ContentDisposition disposition = attachment.ContentDisposition;
        disposition.CreationDate = File.GetCreationTime(attachmentFilename);
        disposition.ModificationDate = File.GetLastWriteTime(attachmentFilename);
        disposition.ReadDate = File.GetLastAccessTime(attachmentFilename);
        disposition.FileName = Path.GetFileName(attachmentFilename);
        disposition.Size = new FileInfo(attachmentFilename).Length;
        disposition.DispositionType = DispositionTypeNames.Attachment;
        message.Attachments.Add(attachment);                
    }

    smtpClient.Send(message);
}
于 2013-06-21T18:24:50.260 に答える