1

我有一个带有映射任务和通知任务的 IICS 任务流。映射任务的目标是存储在服务器位置的 csv。

通过通知任务,我想发送一封附有 csv 的电子邮件。您知道这是否可能,或者是否有其他方法可以通过电子邮件发送目标 csv?

4

1 回答 1

0

不是理想的解决方案,但您可以编写一个简单的 python 程序将 csv 作为电子邮件发送,只需提供 csv 到 python 程序的路径。然后,从 informatica 执行 python 脚本作为命令任务。(如果成功)使用 python 脚本非常容易。

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import os
import shutil


def send_mail(body_text, fromaddr, recipient_list, smtp_login, smtp_pass, file_path):
    msg = MIMEMultipart()
    msg['From'] = fromaddr
    msg['To'] = ', '.join(recipient_list)
    msg['Subject'] = 'your Subject variable'
    msg.attach(MIMEText(body_text, 'plain'))

    filename = os.path.basename(file_path)
    attachment = open(file_path, "rb")

    part = MIMEBase('multipart', 'mixed; name=%s' % filename)
    part.set_payload(attachment.read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', "attachment; filename= %s" % filename)

    msg.attach(part)

    server = smtplib.SMTP(host="your.mailserver.com", port=123)
    # eg smtp.google.com

    server.starttls()
    server.login(smtp_login, smtp_pass)
    text = msg.as_string()
    server.set_debuglevel(1)
    server.sendmail(fromaddr, recipient_list, text)
    server.quit()


mainDir = '/path/to/file'

sendFileName = 'yourfilename' + '.csv'
sourceFilePath = mainDir + 'file_send/filename.csv'


body_text = '''
Dear All,

Please find attached document

Thank You.

'''



smtp_login = "emailusername"
smtp_pass = "emaipassword"
recipient_list = ['abc@company.com', 'def@company.com']
file_path = os.path.abspath(sendFilePath)

fromaddr = 'emailusername@company.com'

send_mail(body_text=body_text, fromaddr=fromaddr, recipient_list=recipient_list, smtp_login=smtp_login, smtp_pass=smtp_pass,
          file_path=file_path)

此代码可能需要一些修改,但认为它可能对某人有所帮助。

于 2021-03-08T21:13:26.203 回答