

win32comでメール自動送付のプログラムを作っていますが、メールの先頭に書く宛名を変えるためにformatメソッドを使いました。

### コード

[code]

    outlook = win32com.client.Dispatch("Outlook.Application")
    mail = outlook.createItemFromTemplate(temp_path)
    
    mail.body = mail.body.format(name)
    #mail.HTMLbody = mail.HTMLbody.format(name)
    
[/code]

### テンプレート

* * *

{} 様  
締め切りは **××日** です。  
よろしくお願いします。

* * *

### 失敗例１

* * *

〇〇 様  
締め切りは××日です。  
よろしくお願いします。

* * *

### 失敗例２

* * *

〇〇 様

締め切りは **××日** です。

よろしくお願いします。

* * *

しかしformatメソッドの直後、テンプレートで設定されていた書式（文字の色、フォント、太さなど）やタブなどが初期化されてしまいました。HTMLBodyの場合、書式以外は初期化され文ごとに一行空けるという不要な改行がされていました。

format以外で宛名など特定の文字列を変える方法はあるのでしょうか？  
教えていただけたら幸いです。


CC BY-SA 4.0
2021-10-01T07:36:46.610
82792
2023-06-19T04:07:00.773
2021-10-04T05:26:54.343
41798
41798
question
python
メールのテンプレートの書式設定を保存したまま宛名などを変えたい


テンプレートファイル（msg形式）からcreateItemFromTemplateで読み込んでいましたが取りやめ、ソースコード上でテンプレートのHTMLコードを書くことで解決しました。

HTML形式でメールを編集したほうが、フォントなどの設定もできるので便利でした。

[code]

    name = "imbzer"
    
    outlook = win32com.client.Dispatch("Outlook.Application")
    mail = outlook.createItem(0)
    
    mail_temp = '''
    <html>
    <body>
    {} 様<br>
    締め切りは<b>××日</b>です。<br>
    よろしくお願いします。
    <body>
    <html>
    
    '''
    
    mail.HTMLbody = mail_temp.format(name)
    
[/code]


CC BY-SA 4.0
2021-10-06T00:11:03.697
82900
2021-10-06T00:11:03.697
41798
82792
answer