我们可以通过上下文管理器 , 在参数中传递的文件路径 。 然后指定读取类型 , 在这个例子中 , 我们需要读取字节 。 我们可以使用 MIMEBase 指定 MIME 类型的文件 。 mime_maintype 是主要类型 , mime_subtype 是子类型 。 接着 , 我们还需要设置内容的有效负载 。 在这个例子中就是附加文件 。 为了发送文件 , 我们需要将其编码为 base64 , 因此前面我们导入了 encoders , 我们需要将媒体编码为 base64 。 此外 , 我们还需要添加一个 content-disposition 类型的头部 , 并在其中指定文件名 。 然后 , 将其附加到我们的电子邮件中 , 就可以像前面一样发送邮件了 。
main.pydef send_mms_via_email( number: str, message: str, file_path: str, mime_maintype: str, mime_subtype: str, provider: str, sender_credentials: tuple, subject: str = "sent using etext", smtp_server: str = "smtp.gmail.com", smtp_port: int = 465,):sender_email, email_password = sender_credentials receiver_email = f' {number}@ {PROVIDERS.get(provider).get( "sms")} ' email_message = MIMEMultipart email_message[ "Subject"] = subject email_message[ "From"] = sender_email email_message[ "To"] = receiver_email email_message.attach(MIMEText(message, "plain")) withopen(file_path, "rb") asattachment: part = MIMEBase(mime_maintype, mime_subtype) part.set_payload(attachment.read) encoders.encode_base64(part) part.add_header( "Content-Disposition", f"attachment;filename= {basename(file_path)}" , ) email_message.attach(part)最后 , 我们不能直接发送 MIME 类型的电子邮件 , 我们必须在上下文管理器之外将其转换为文本 。
main.pydef send_mms_via_email( number: str, message: str, file_path: str, mime_maintype: str, mime_subtype: str, provider: str, sender_credentials: tuple, subject: str = "sent using etext", smtp_server: str = "smtp.gmail.com", smtp_port: int = 465,): sender_email, email_password = sender_credentials receiver_email = f' {number}@ {PROVIDERS.get(provider).get( "sms")} ' email_message = MIMEMultipart email_message[ "Subject"] = subject email_message[ "From"] = sender_email email_message[ "To"] = receiver_email email_message.attach(MIMEText(message, "plain")) withopen(file_path, "rb") asattachment: part = MIMEBase(mime_maintype, mime_subtype) part.set_payload(attachment.read) encoders.encode_base64(part) part.add_header( "Content-Disposition", f"attachment;filename= {basename(file_path)}" , ) email_message.attach(part) text = email_message.as_string下面的代码与 SMS 几乎一样 , 只不过我们必须将电子邮件的内容改为刚刚创建的文本 。
main.pydef send_mms_via_email( number: str, message: str, file_path: str, mime_maintype: str, mime_subtype: str, provider: str, sender_credentials: tuple, subject: str = "sent using etext", smtp_server: str = "smtp.gmail.com", smtp_port: int = 465,): sender_email, email_password = sender_credentials receiver_email = f' {number}@ {PROVIDERS.get(provider).get( "sms")} ' email_message = MIMEMultipart email_message[ "Subject"] = subject email_message[ "From"] = sender_email email_message[ "To"] = receiver_email email_message.attach(MIMEText(message, "plain")) withopen(file_path, "rb") asattachment: part = MIMEBase(mime_maintype, mime_subtype) part.set_payload(attachment.read) encoders.encode_base64(part) part.add_header( "Content-Disposition", f"attachment;filename= {basename(file_path)}" , ) email_message.attach(part) text = email_message.as_string withsmtplib.SMTP_SSL( smtp_server, smtp_port, context=ssl.create_default_context ) asemail: email.login(sender_email, email_password) email.sendmail(sender_email, receiver_email, text)下面 , 我们来创建 main 函数 。 与 SMS 的代码类似 , 我们只需添加文件路径和 MIME 类型 。 为了发送一个 png 图像 , 我们必须指定 mime_maintype 为 “image” , mime_subtype 为 “png” 。
main.pydef main: file_path = "/path/to/file/file.png"mime_maintype = "image"mime_subtype = "png"number = "5623720883"message = "hello world!"provider = "T-Mobile"sender_credentials = ( "email@domain.com", "password") send_mms_via_email( number, message, file_path, mime_maintype, mime_subtype, provider, sender_credentials, ) if__name__ == "__main__": main同时支持 SMS 和 MMS 的代码如下:
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。