相关疑难解决方法(0)

使用 Django 或 Python 发送带有日历 ICS 附件的文本 + HTML 电子邮件

我一直在寻找一个库或至少是功能性的代码片段,可以让我从 Django(或至少在 Python 中)发送一封电子邮件,其中包含文本内容、HTML 内容和每个专业都认可的 ICS 日历附件电子邮件客户端。对于我的特定用例,如果向用户提供“添加到日历”按钮就足够了。

我觉得现在这应该是一个已解决的问题,但我只找到引用未维护或以其他方式过时或不完整的库的答案。我已经测试了几个将附加 ICS 文件的片段,但 G-mail 没有给我像通常那样将其添加到日历的选项。

有我缺少的现成解决方案吗?

python email django icalendar

7
推荐指数
2
解决办法
5765
查看次数

为什么GMail无法识别代码发送的会议请求?

我想知道如何发送会议请求以允许GMail正确识别它?

如果您尝试发送iCalendar会议请求定义作为替代视图,使用习惯代码(也通过下面给出)通过MailMessage对象GMail,将导致未被识别的会议请求:

在此输入图像描述

但是通过GMail UI发送的具有完全相同的会议请求的邮件导致公认的会议请求!令人费解.

在此输入图像描述

有人知道我错过了什么"魔法"吗?

很高兴注意到Outlook正确识别了给定代码发送的完全相同的会议请求. 在此输入图像描述

使用会议请求发送邮件的代码:

class Program
{
    static string From = "sender@example.com";
    static string TimeFormat = "yyyyMMdd\\THHmmss\\Z";
    static string To = "target@example.dom";

    static void Main(string[] args)
    {
        string content = ReadFile("event-template.ics");

        content = content.Replace("#TO#", To);
        content = content.Replace("#FROM#", From);
        content = content.Replace("#UID#", Guid.NewGuid().ToString().Replace("-", ""));
        content = content.Replace("#CREATED-AT#", DateTime.UtcNow.AddDays(-1).ToString(TimeFormat));
        content = content.Replace("#DTSTART#", DateTime.UtcNow.AddDays(1).ToString(TimeFormat));
        content = content.Replace("#DTEND#", DateTime.UtcNow.AddDays(1).AddHours(1).ToString(TimeFormat));

        MailMessage message = new MailMessage();
        message.From = new MailAddress(From);
        message.To.Add(new MailAddress(To));
        message.Subject = "Meeting Request …
Run Code Online (Sandbox Code Playgroud)

c# email icalendar outlook gmail

6
推荐指数
1
解决办法
2189
查看次数

为什么 encode_base64 给我 TypeError: expected bytes-like object, not NoneType

我有一个错误,TypeError:预期的类似字节的对象,而不是 NoneType。错误来自:encoders.encode_base64(eml_atch) line 56。

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate
from email import encoders
import os,datetime

CRLF = "\r\n"
login = "my@email.com"
password = "mypassword"
attendees = ["attendees1@gmail.com", "attendees2@gmail.com","attendees3@gmail.com"]
organizer = "ORGANIZER;CN=organiser:mailto:first"+CRLF+" @ada-asia.com"
fro = "Fahim Maula <fahim.maula@ada-asia.com>"

ddtstart = datetime.datetime.now()
dtoff = datetime.timedelta(days = 1)
dur = datetime.timedelta(hours = 1)
ddtstart = ddtstart +dtoff
dtend = ddtstart + dur
dtstamp = datetime.datetime.now().strftime("%Y%m%dT%H%M%SZ")
dtstart = ddtstart.strftime("%Y%m%dT%H%M%SZ")
dtend …
Run Code Online (Sandbox Code Playgroud)

outlook smtplib python-3.x

2
推荐指数
1
解决办法
845
查看次数

使用 Python 发送 Outlook 电子邮件的方法差异

我是 Python 新手,最近尝试了两种在 Outlook 365 上自动发送电子邮件的方法,其中一种比另一种更成功。我想问一下主要的区别是什么,因为它们看起来差别很大。

第一种方法本质上是《自动化无聊的东西》一书中概述的方法,使用 SMTP 或 IMAP。我尝试了这个,但没有让它工作,可能是因为使用办公室计算机的身份验证问题。

第二种方法对我有用,不涉及身份验证,我只需导入 win32com 客户端和以下代码:

outlook = client.Dispatch('Outlook.Application')
message = outlook.CreateItem(0)
message.Display() 
message.To = "redacted"
message.CC = "redacted"
message.Subject = "Hello"
Run Code Online (Sandbox Code Playgroud)

我想问一下这两种方法的主要区别是什么。似乎第二个可能依赖于 Outlook 打开和我登录,但如果我的计算机进入睡眠状态,第一个也可以工作吗?

当我已经登录到 Windows 并无需输入用户 ID 和密码即可访问 Outlook 时,为什么还要采用涉及身份验证的第一种方法?

我认为这个问题对于其他刚接触 Python 和电子邮件自动化的人来说可能有用,因为他们在寻找解决方案时也可能会遇到这两种方法。

python outlook smtp win32com

2
推荐指数
1
解决办法
4339
查看次数

标签 统计

outlook ×3

email ×2

icalendar ×2

python ×2

c# ×1

django ×1

gmail ×1

python-3.x ×1

smtp ×1

smtplib ×1

win32com ×1