見通し受信メールループ、アタッチメントポイントのファイルストレージ

開発プロセスへの展望を使用してメールを受信する必要がある、我々は、コントロールは、ソースコードを送信した後、いくつかの欠点、RPAメールの研究を持っていることがわかった、ループを記述店にフォルダ内のすべてのメッセージをコード未読メッセージを受信し、添付ファイルのポイント。

シンプルで直接、コード

 

UBPA インポートioutlook
 から UBPA インポートiResult
 から ubpa.ilog インポートのILog
 インポート一時ファイル
 のインポートOSの


__loggerを =のILog(__FILE__ __attachment_path = tempfile.gettempdir()+ os.sep   デフォルトパスの保存


DEFの recv_outlook(mail_account、subject_filter、mail_inbox、attachment_pathを、トップ、MARK_AS_READ =真、only_unread = 真):
     '' ' 
    :PARAM mail_account:Eメール
    :のparam subject_filter:テーマ
    :のparam mail_inbox:受信トレイ名
    :のparam attachment_path:アクセサリー・パス 
    :のparamトップ:一度、いくつかの電子メールを読みます
    :PARAM MARK_AS_READ:メッセージを読むとしてマーク
    PARAM only_unread:未読メッセージの
    リターン:タプル(メールオブジェクト、未読メッセージの合計数) 
    '' ' 
    メーリングリストの 
    メール= [] 
    NUM = 1 

    トレイ = ioutlook.get_inbox(mail_account 、mail_inbox)
     IF 受信トレイ:
        メッセージ =のinbox.Items 

        IF only_unread:
            メッセージ = messages.Restrict(' [未読]は= TRUE '未読メッセージ

        messages.Sort(" [ReceivedTime] "、TRUE)  書き込み時間を降順

        未読の総数 
        TOTAL_NUM = LEN(メッセージ)
         IF  ないトップ:
            トップ = LEN(メッセージ)

        __loggerの .DEBUG(U " トータル受ける[ " + STR(LEN(メッセージ))+ " ]メールのコピーは、上位NをGET:" + STR(トップ)) 

        サイクル未読メッセージ
        のためのメッセージでのメッセージ:
             添付ファイルリスト 
            ATTSは= [] 

            IF NUM> トップ:
                 BREAKの

            送信者 = message.SenderEmailAddressの   #の送信者アドレス
            = message.Subject件名の   関連 
            ボディmessage.Body =   #のテキスト 
            CC = message.CC   #のCCの 
            received_time = STR(message.ReceivedTime)書き込み時間の 
            添付ファイル=のmessage.Attachments   #のアクセサリー

            #1 に関連する決意かどうかが
            IF subject_filter  subject_filter しない 件名:
                 続行
            他の
                フラグに = 

            フィルタ等body_filter、sender_filter:上記のように、のような、決意の複数の条件を添加してもよい

            #1 ループアタッチメント
            アタッチメント添付:
                FILE_NAME = attachment.FileName 
                att_file_path = attachment_path + os.sep + FILE_NAME 
                attachment.SaveAsFile(att_file_path)
                atts.append(att_file_path)

            場合、フラグ:
                MAIL_MESSAGE = iresult.MailMessage()    实例化

                属性赋值 
                mail_message.sender_mail = 差出人
                mail_message.received_time = received_time 
                mail_message.subject =対象
                mail_message.body = ボディ
                mail_message.cc = CC 
                mail_message.attachmentsの =のATTSの

                mails.append(MAIL_MESSAGE)

                NUM + = 1。IF MARK_AS_READ:
                    message.UnRead = Falseの   #の読みとしてフラグを印刷' 附属書:' 、ATTS)
         リターンメール、 TOTAL_NUMの充電が完了するまで、未読メッセージを修飾円形受信機 
のn = 1。しばらく真:
    FP = R&LT " C:Users \ユーザー\ rongg \デスクトップ\新しいフォルダ\アタッチメントAAA%sの

                
            



N-
     IF  ないos.path.exists(FP):
        os.mkdir(FP)
    の試行
        メールで、total_mail_num = recv_outlook(' [email protected] '' テスト'' 受信トレイ'、FP ,. 1 

        印刷' メッセージオブジェクト:' 、電子メールで)
         プリント' 送信者:' 、メールに[0] .sender_mail)
         プリント' メッセージの件名:' 電子メール[0] .Subject)
         プリント' メッセージ本文:' 、メールに[0] .body)
         プリント" メッセージの総数:'total_mail_num)
         プリント' - ' * 100 を除いてはIndexError:
         印刷' いいえ未読メッセージ' IF。total_mail_num <= 1 BREAK 
    N- + 1 =

    

 

 

後続の更新。

 

おすすめ

転載: www.cnblogs.com/rongge95500/p/11426921.html