win32comを使用してOutlook経由でメールを送信し、署名ファイルを追加する

SydDevious

私はPython3.5を使用して、仕事用のいくつかの電子メールを自動化しています。SMTPは使用できません。これは、win32comを介してOutlookを制御することによって実行する必要があります。私はそれをすべて機能させました。HTMLメールを作成できます。メールアドレスを指定できます。Outlookプロファイルでアクティブなメールアドレスが開いている場合は、そのアドレスから送信されます。cc、bcc、件名などを追加できます。

私の問題は、Outlookに保存されている署名を追加することです。Outlookの署名が公開されていないことを読んだので、SendUsingAccountフィールドやmail.CCフィールドのように単純に呼び出すことはできません。

これに対する私の代替手段は、ユーザーにtkinterとaskopenfilename()を使用してファイルを指定させることです。

それはほとんどの部分で機能します。ユーザーは署名ファイルの場所を1回指定します。私はそれを私のtkinterプログラムが起動時に読み取るデータファイルに保存します。ユーザーがメールを生成して送信します。

問題は、署名ファイルからHTMLを読み取り、それを変数に格納してから、既存のHTMLBodyに追加していることです。

できます。ただし、HTMLの署名ファイルに含まれている画像は表示されません。

修正されることを期待して、htmlファイル内の画像の短いアドレスをFULLディレクトリに置き換える追加のスクリプトを作成しようとしました。立ち入り禁止。

署名ファイルに含まれている写真が実際に電子メールに表示されるようにする方法はありますか?

これが私の署名ファイルのHTMLリーダー/エディターです

def altersigfile(file):
    fullDir = file
    newDir = fullDir.rsplit("\\",1)[0]
    subDir = fullDir.rsplit("\\", 1)[1]
    subDir = subDir.replace(" ", "%20")
    subDir = subDir.strip(".htm")
    subDir += "_files"
    newDir += "/" + subDir
    newDir = newDir.replace("\\", "/")
    newsigfile = ""

    with open(fullDir,"r") as file:
        for line in file:

            if "src=" in line:
                check = ""
                newline = ""
                check = r'src="' + subDir
                newline = re.sub(subDir, newDir, line)
                newsigfile += newline

            else:
                newsigfile += line



    return newsigfile

これが私のメール送信者のスクリプトです。

def emailer(sendFrom, sendTo, subject, cc, bcc, body, sigfile=None,     auto=False, useSig=False):
ol = win32.Dispatch('Outlook.Application')
msg = ol.CreateItem(0)

#DO NOT CHANGE: the below script is the only way you were able to get outlook to register what email you give it. 
b=False
for i in range(1,ol.Session.Accounts.Count+1):

    if ol.Session.Accounts.Item(i).SmtpAddress == sendFrom:
        sendFrom = ol.Session.Accounts.Item(i)
        b=True
        break

if b==False:
    messagebox.showinfo("Invalid Address",
                        """The email address you entered ({email}), is not an authorized outlook email address. Please verify the email address you provided and make sure it is authorized in your outlook.""".format(email = sendFrom))
    return

msg._oleobj_.Invoke(*(64209, 0, 8, 0, sendFrom))
#end of DO NOT CHANGE

msg.To = sendTo
msg.Subject = subject

if cc:
    msg.CC = sendFrom

if bcc:
    msg.BCC = ol.Session.Accounts.Item(1).SmtpAddress

msg.HTMLBody = body


#currently this does add the sigfile html file held by outlook. However... the picture doesnt load. :(

if useSig==True:
    signature = altersigfile(sigfile)
    msg.HTMLBody += signature
    print(msg.HTMLBody)

繰り返しになります。上記は、署名ファイルに含まれている画像が表示されないことを除いて、すべての方法で機能します。これが唯一の間違いであり、私はそれを機能させる方法を見つけることができないようです。どんな助けでも大歓迎です。ありがとうございました。

PSコードの2番目のバッチでフォーマットして申し訳ありません。私の人生の間、私はそれを正しくフォーマットすることができなかったようです。

ドミトリー・ストレブレチェンコ

他のいくつかのオプション。

  1. 償還は、RDOSession.Signaturesコレクションを介して署名を公開し、そのRDOSignatureオブジェクトはApplyTo、指定されたメッセージに署名(テキスト、画像、スタイル)をコピーするメソッドを公開します。

  2. 必要なのがデフォルトの署名だけの場合は、Outlookに処理を任せます。OutlookがメッセージMailItem.Displayを表示するとき)、またはMailItem.GetInspectorプロパティにアクセスして間もなくメッセージを表示するとOutlookが判断したときに、署名が追加されます。MailItem.Displayまたはを呼び出すとすぐにMailItem.GetInspector、BodyまたはHTMLBodyプロパティを使用してメッセージ本文をまだ設定していない限り、メッセージ本文に署名が追加されます。ここで行う必要があるのは、HTMLBodyプロパティ(署名のみを持つ)を読み取り、テキストをその値にマージして、HTMLBodyプロパティを元に戻すことだけです。2つのHTML文字列を単純に連結することはできず、それらをマージする必要があることに注意してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Win32com経由でOutlookの電子メールテンプレート(.oft)をロードする

分類Dev

Postfixを使用してJava経由でメールを送信する

分類Dev

Postfixを使用してJava経由でメールを送信する

分類Dev

ipyvuetifyを使用してOulook経由でメールを送信する

分類Dev

Perlを使用してGSuite経由でメールを送信する

分類Dev

Delphi:複数の添付ファイルを付けてOutlook経由でメールを送信する

分類Dev

OutlookからWin32comを介して添付ファイルをダウンロードする際のCOMエラー

分類Dev

win32comを使用してExcelファイルにアクセスする際の問題

分類Dev

obexftpを使用してBluetooth経由でラズベリーパイ間でファイルを送信する

分類Dev

gnutlsと追加の引数を使用してsmtp経由でemacs24を使用してメールを送信する

分類Dev

win32comとosを使用してExcelファイルタイプを繰り返し変更するにはどうすればよいですか?

分類Dev

Cのソケットを使用してTCP経由でオーディオファイルを送信する

分類Dev

MailKitを使用してOutlook.com経由で送信する

分類Dev

C ++を使用してTCP経由でファイルを送信し、間違ったサイズを受信する

分類Dev

python win32com:Outlookで複数のメールを削除する

分類Dev

Androidの添付ファイルとして画像を含むGmailを使用して、暗黙のインテント経由でメールを送信しますか?

分類Dev

Python経由でOutlookメールを送信しますか?

分類Dev

VSTSでPowershellを使用してGMAIL経由でメールを送信する

分類Dev

uuencodeでcatを使用してunix経由でメールを送信する

分類Dev

Pythonを使用してwin32comでOutlookにアクセスする

分類Dev

mailRパッケージを使用してR経由でOutlook経由で認証済みメールを送信する

分類Dev

Golangを使用してG Suite経由でメールを送信する

分類Dev

LaravelMailクラスを使用してAWSSES経由でメールを送信する

分類Dev

PHPを使用してSMTP経由で電子メールを送信する方法

分類Dev

Google AppEngine経由でJavaMailを使用してメールを送信する方法

分類Dev

Laravel 5.2 - 専用 IP を使用して SparkPost 経由でメールを送信する

分類Dev

PHP経由でsendgridを使用してメールを適切に送信する方法

分類Dev

Python-Outlook2007 / 2010およびwin32comを介してHTML形式の電子メールを送信します

分類Dev

win32comを使用してPythonメールにパンダ変数を挿入する方法

Related 関連記事

  1. 1

    Win32com経由でOutlookの電子メールテンプレート(.oft)をロードする

  2. 2

    Postfixを使用してJava経由でメールを送信する

  3. 3

    Postfixを使用してJava経由でメールを送信する

  4. 4

    ipyvuetifyを使用してOulook経由でメールを送信する

  5. 5

    Perlを使用してGSuite経由でメールを送信する

  6. 6

    Delphi:複数の添付ファイルを付けてOutlook経由でメールを送信する

  7. 7

    OutlookからWin32comを介して添付ファイルをダウンロードする際のCOMエラー

  8. 8

    win32comを使用してExcelファイルにアクセスする際の問題

  9. 9

    obexftpを使用してBluetooth経由でラズベリーパイ間でファイルを送信する

  10. 10

    gnutlsと追加の引数を使用してsmtp経由でemacs24を使用してメールを送信する

  11. 11

    win32comとosを使用してExcelファイルタイプを繰り返し変更するにはどうすればよいですか?

  12. 12

    Cのソケットを使用してTCP経由でオーディオファイルを送信する

  13. 13

    MailKitを使用してOutlook.com経由で送信する

  14. 14

    C ++を使用してTCP経由でファイルを送信し、間違ったサイズを受信する

  15. 15

    python win32com:Outlookで複数のメールを削除する

  16. 16

    Androidの添付ファイルとして画像を含むGmailを使用して、暗黙のインテント経由でメールを送信しますか?

  17. 17

    Python経由でOutlookメールを送信しますか?

  18. 18

    VSTSでPowershellを使用してGMAIL経由でメールを送信する

  19. 19

    uuencodeでcatを使用してunix経由でメールを送信する

  20. 20

    Pythonを使用してwin32comでOutlookにアクセスする

  21. 21

    mailRパッケージを使用してR経由でOutlook経由で認証済みメールを送信する

  22. 22

    Golangを使用してG Suite経由でメールを送信する

  23. 23

    LaravelMailクラスを使用してAWSSES経由でメールを送信する

  24. 24

    PHPを使用してSMTP経由で電子メールを送信する方法

  25. 25

    Google AppEngine経由でJavaMailを使用してメールを送信する方法

  26. 26

    Laravel 5.2 - 専用 IP を使用して SparkPost 経由でメールを送信する

  27. 27

    PHP経由でsendgridを使用してメールを適切に送信する方法

  28. 28

    Python-Outlook2007 / 2010およびwin32comを介してHTML形式の電子メールを送信します

  29. 29

    win32comを使用してPythonメールにパンダ変数を挿入する方法

ホットタグ

アーカイブ