Насколько я вижу в документах, есть класс google.appengine.api.mail.Attachment
, но класс google.appengine.api.mail.EmailMessage
не имеет никакого метода attach()
.
Класс google.appengine.api.mail.EmailMessage
имеет свойство attachment
, и поэтому оно работает, когда вы инициализируете письмо с attachments=[(foo,bar),(foo,bar)]
.Вы на самом деле создаете новые экземпляры google.appengine.api.mail.Attachment
(используя кортежи, как объяснено в в документации ), добавляете их в массив и используете этот массив в качестве свойства attachments
при инициализации электронной почты.
Обратите внимание, что в документах, когда они пишут attachment = mail.Attachment('foo.jpg', 'data')
, mail
является ссылкой на импортированный google.appengine.api.mail
, а не на экземпляр объекта почты.
Возвращаясь к вашему примеру (обратите внимание, что я не разработчик Python и я не пробовал его, я просто просматриваю документы и делаю предположения), вместо
message.attach("certificate.pdf", new_file, "application/pdf")
вам следуетвероятно, пойдем дальше по пути
attachment1 = mail.Attachment("certificate.pdf", new_file, "application/pdf")
attachment2 = mail.Attachment("another_certificate.pdf", new_file, "application/pdf")
message.attachments = [attachment1, attachment2]
Прошло много лет с тех пор, как я играл с python, но не стесняйтесь исследовать эти идеи и редактировать мой ответ на случай, если я что-то не так (или опубликовать свой собственный ответ).