Tạo email triển vọng python

Một trong những câu chuyện phổ biến nhất của chúng tôi đã thảo luận về cách tự động gửi email bằng Python. Trong bài viết đó, chúng tôi đã sử dụng thư viện smtplib để kết nối với máy chủ SMTP và gửi email. Mặc dù điều này rất hữu ích, nhưng nó có một vài sai sót. Thứ nhất, chúng tôi phải xác thực bản thân với máy chủ SMTP thông qua email và mật khẩu được cung cấp ở định dạng dựa trên văn bản trong mã của chúng tôi. Mặc dù chúng tôi đã thực hiện các bước để đảm bảo rằng thông tin bí mật của chúng tôi được giữ bí mật, nhưng đây vẫn là một lỗ hổng bảo mật lớn trong chương trình. Ngoài ra, Google gần đây đã cho phép chúng tôi kết nối với máy chủ SMTP của gmail từ các ứng dụng kém an toàn hơn như của chúng tôi, vì vậy chúng tôi không thể sử dụng mã này cho trường hợp sử dụng này nữa. Một vấn đề khác với cách tiếp cận trước đây của chúng tôi là nó không cho phép hiệu đính email trước khi gửi.

Để giải quyết những vấn đề này, trong bài viết này, chúng tôi muốn nói về cách tận dụng appscripts và Python trong MacOS để gửi email hàng loạt được cá nhân hóa từ Microsoft Outlook

Yêu cầu trước

Trước khi đi vào chi tiết về cách thức hoạt động của nó, trước tiên chúng ta cần thảo luận về một số yêu cầu trước đó được yêu cầu để chạy chương trình này. Trước tiên, bạn sẽ cần một máy tính có hệ điều hành MacOS. Mặc dù có nhiều cách để thực hiện việc này trong Windows hoặc các hệ điều hành khác, nhưng với mục đích của bài viết này, chúng tôi sẽ chỉ tập trung vào MacOS. Thứ hai, bạn sẽ cần cài đặt Công cụ dòng lệnh Python và Xcode. Thứ ba, bạn sẽ cần tải ứng dụng Microsoft Outlook về máy tính và đăng nhập vào tài khoản Outlook của mình. Email sẽ được gửi từ email mặc định mà bạn đã đặt trong ứng dụng này. Cuối cùng, trước khi chúng tôi tìm hiểu cách gửi email bằng cách sử dụng appscripts và Python, vui lòng đảm bảo xem lại bài viết trước của chúng tôi “Tự động gửi email bằng Python” vì chúng tôi sẽ mở rộng lớp được cung cấp trong bài viết đó để đạt được chức năng mới

Bây giờ chúng ta đã thảo luận về các điều kiện tiên quyết liên quan đến bài viết này, chúng ta cần đảm bảo rằng chúng ta đã thiết lập môi trường để chương trình này hoạt động. Điều này liên quan đến việc tạo một mẫu email mà chúng tôi muốn gửi và (tùy chọn) lấy tên và email của những người cần được cc cho tất cả các email đã gửi. Mẫu email nên sử dụng công cụ mẫu jinja và được đặt trong thư mục \templates. Email và tên của những người cần được cc'd nên được đưa vào .env ở thư mục gốc của dự án của bạn. Tệp .env mẫu được hiển thị bên dưới

[email protected],[email protected]
names=Test1,Test2

Tóm lại, để chạy chương trình này một cách hiệu quả, cấu trúc tệp của bạn sẽ giống như sau. Chúng tôi sẽ sử dụng # để hiển thị các nhận xét bên dưới, mặc dù chúng không xuất hiện trong hệ thống tệp của bạn

#The file that will run the program. We define OutlookEmailer here.
- main.py

# the superclass file
- emailer.py

# The folder containing the templates
- templates
# the default template file
- template.html

# Your env folder
- .env

siêu lớp

Để bắt đầu, chúng tôi sẽ mở rộng lớp được cung cấp trong bài viết trước của chúng tôi. Là một đánh giá ngắn gọn về chức năng được cung cấp bởi lớp

#The file that will run the program. We define OutlookEmailer here.
- main.py

# the superclass file
- emailer.py

# The folder containing the templates
- templates
# the default template file
- template.html

# Your env folder
- .env
0 được xác định trong bài viết trước của chúng tôi, lớp này kết nối với máy chủ SMTP và tự xác thực bằng email và mật khẩu được cung cấp trong tệp cấu hình. Sau đó, nó xác định các chức năng đọc thông tin cần thiết từ tệp csv. Thông tin trong tệp csv ít nhất phải có email của từng người nhận. Tệp csv có thể tùy chọn chứa thông tin cần thiết để cá nhân hóa từng email, chẳng hạn như tên người dùng. Cuối cùng, lớp cha xác định một bộ chức năng để xây dựng và gửi email bằng cách sử dụng thông tin được đọc từ tệp csv

Lớp người gửi email Outlook

Lớp

#The file that will run the program. We define OutlookEmailer here.
- main.py

# the superclass file
- emailer.py

# The folder containing the templates
- templates
# the default template file
- template.html

# Your env folder
- .env
1 mở rộng lớp
#The file that will run the program. We define OutlookEmailer here.
- main.py

# the superclass file
- emailer.py

# The folder containing the templates
- templates
# the default template file
- template.html

# Your env folder
- .env
0 nhưng có 2 sửa đổi lớn. nó không kết nối với máy chủ SMTP khi khởi tạo và nó không tự động gửi email từ hàm
#The file that will run the program. We define OutlookEmailer here.
- main.py

# the superclass file
- emailer.py

# The folder containing the templates
- templates
# the default template file
- template.html

# Your env folder
- .env
3. Thay vào đó, lớp này kết nối với ứng dụng Microsoft Outlook khi khởi tạo. Nó cũng tạo một email nháp cho từng địa chỉ email người nhận trong Microsoft Outlook trong hàm
#The file that will run the program. We define OutlookEmailer here.
- main.py

# the superclass file
- emailer.py

# The folder containing the templates
- templates
# the default template file
- template.html

# Your env folder
- .env
3

Để làm được điều này,

#The file that will run the program. We define OutlookEmailer here.
- main.py

# the superclass file
- emailer.py

# The folder containing the templates
- templates
# the default template file
- template.html

# Your env folder
- .env
1 tận dụng appscripts, một “cầu nối sự kiện cấp cao, thân thiện với người dùng của Apple cho phép bạn kiểm soát các ứng dụng Mac OS X có thể viết được từ Python, Ruby và Objective-C”. Hãy xem mã

________số 8_______

Đoạn mã trên hiển thị hàm

#The file that will run the program. We define OutlookEmailer here.
- main.py

# the superclass file
- emailer.py

# The folder containing the templates
- templates
# the default template file
- template.html

# Your env folder
- .env
6 cho lớp OutlookEmailer. Trong chức năng này, trước tiên chúng tôi sử dụng lớp ứng dụng từ appscripts để mở ứng dụng Microsoft Outlook. Sau đó, chúng tôi thiết lập môi trường để truy xuất các mẫu email của mình bằng cách sử dụng các mẫu jinja. Lưu ý rằng chúng tôi đang tải các mẫu email từ thư mục
#The file that will run the program. We define OutlookEmailer here.
- main.py

# the superclass file
- emailer.py

# The folder containing the templates
- templates
# the default template file
- template.html

# Your env folder
- .env
7, vì vậy hãy đảm bảo thiết lập thư mục này khi chạy chương trình

...
# This function reads in the emails that need to be cc'd to
# all emails sent in this batch. The cc'd emails and names
# are defined in a.env file
#
# preconditions: the emails and names are defined in the env file
# postconditions: the emails and names are saved
def carboncopy(self):
# Carbon Copy (cc) Email list
cc = os.environ.get('cc')
self.cc = cc.split(",")
names = os.environ.get('names')
self.names = names.split(",")

# This functions creates the email and opens it in outlook. It doesn't send it automatically however
# preconditions: the emails for the recipients and any other required information for the templates
# postconditions: the emails are created
def send_email(self,customers,template="template.html",subject="Email"):
tmp = self.env.get_template(template)
for d in customers:
msg = self.outlook.make(
new=k.outgoing_message,
with_properties={
k.subject: subject,
# Modify this line with what you need to inject into the
# template. Alternatively you can use the d object if
# if the structure matches your template structure
k.content: tmp.render({"lastname":d["Last Name"]})
}
)

# CC the recipients (technically this just adds them as a recipiant but same thing)
self.carboncopy()
for i,n in enumerate(self.names):
msg.make(
new=k.recipient,
with_properties={
k.email_address: {
k.address: self.cc[i]}})

# Add the original recipiant
msg.make(
new=k.recipient,
with_properties={
k.email_address: {
k.address: d["Email"]}})

# Open the message in outlook
msg.open()
msg.activate()

Hàm

#The file that will run the program. We define OutlookEmailer here.
- main.py

# the superclass file
- emailer.py

# The folder containing the templates
- templates
# the default template file
- template.html

# Your env folder
- .env
8 trong đoạn mã trên đọc các email cần được cc cho mỗi email được gửi. Sau đó, nó lưu trữ thông tin này để sử dụng sau này trong chương trình. Hàm
#The file that will run the program. We define OutlookEmailer here.
- main.py

# the superclass file
- emailer.py

# The folder containing the templates
- templates
# the default template file
- template.html

# Your env folder
- .env
9 chuẩn bị gửi email và mở nó trong Microsoft Outlook. Một danh sách các đối tượng cần được chuyển vào dưới dạng tham số khách hàng. Mỗi đối tượng phải có email người nhận và có thể tùy chọn thêm các thông tin khác cần thiết để tùy chỉnh email. Trong ví dụ trên, mỗi đối tượng cũng có họ của mỗi người nhận, được sử dụng để cá nhân hóa các email được gửi. Theo tùy chọn, có thể chuyển tên mẫu và chủ đề email vào hàm
#The file that will run the program. We define OutlookEmailer here.
- main.py

# the superclass file
- emailer.py

# The folder containing the templates
- templates
# the default template file
- template.html

# Your env folder
- .env
3. Đoạn mã trên là đoạn mã cuối cùng cần thiết cho lớp
#The file that will run the program. We define OutlookEmailer here.
- main.py

# the superclass file
- emailer.py

# The folder containing the templates
- templates
# the default template file
- template.html

# Your env folder
- .env
1

if __name__ =="__main__":
# Get command line arguments for ease of use
parser = argparse.ArgumentParser(description='Process command line options')
requiredNamed = parser.add_argument_group('required named arguments')
requiredNamed.add_argument('--input_file', required=True, metavar='-i', nargs='+', help='the path to the input file')

args = parser.parse_args()


# Set up the emailer
e = OutlookEmailer()

# Use the superclasses read_file function to read in the data.
customers = e.read_file(args.input_file[0])

# Open up the email in Microsoft Outlook for sending
e.send_email(customers)

Cuối cùng, trong tệp mà chúng tôi đang sử dụng để chạy chương trình (trong trường hợp này là _______8_______2), chúng tôi sẽ bao gồm một số mã truy xuất các đối số dòng lệnh được truyền vào, khởi tạo lớp

#The file that will run the program. We define OutlookEmailer here.
- main.py

# the superclass file
- emailer.py

# The folder containing the templates
- templates
# the default template file
- template.html

# Your env folder
- .env
1 và xây dựng/gửi email. Đây chủ yếu là cùng một mã mà chúng tôi đã sử dụng trong bài viết trước của chúng tôi

Phần kết luận

Trong bài viết này, chúng tôi đã sử dụng Appscripts và Python để tự động gửi email bằng Microsoft Outlook. Mặc dù phương thức này mang lại những lợi thế đáng kể so với phương thức gửi email trước đây của chúng tôi nhưng nó cũng có một số hạn chế. Đối với một, nó phụ thuộc vào hệ điều hành và không thể được sử dụng trên máy Windows. Mặt khác, nó yêu cầu người dùng nhấp thủ công để gửi từng email, mặc dù như đã đề cập ở phần đầu của bài viết này, đây có thể là một tính năng hơn là một lỗi. Bất chấp điều đó, chúng tôi hy vọng rằng bài viết này hữu ích trong việc đáp ứng nhu cầu gửi email hàng loạt của bạn

cảm ơn đã đọc bài viết này. Nếu bạn đang xem xét trở thành thành viên Trung bình, vui lòng xem xét sử dụng liên kết liên kết của chúng tôi. Sử dụng liên kết của chúng tôi sẽ dẫn đến việc chúng tôi nhận được một khoản hoa hồng nhỏ từ đăng ký của bạn. Ngoài ra, vui lòng xem xét để lại cho chúng tôi mẹo bằng cách nhấp vào nút bên dưới câu chuyện này. Hỗ trợ của bạn được đánh giá rất cao

Thêm nội dung tại PlainEnglish. io. Đăng ký nhận bản tin hàng tuần miễn phí của chúng tôi. Theo dõi chúng tôi trên Twitter, LinkedIn, YouTube và Discord. Quan tâm đến hacking tăng trưởng?

Python có thể viết email không?

Tin vui đầu tiên về Python là trong thư viện chuẩn của nó có một mô-đun smtplib tích hợp sẵn được sử dụng để gửi email qua kết nối SMTP. The module uses the standard RFC 821 protocol, so no extra installations or tricks are required.

Python tìm nạp dữ liệu từ Outlook như thế nào?

Đọc thư email Outlook bằng Python .
Tải tệp email bằng MailMessage. phương thức tải (tên tệp)
Đọc dữ liệu bằng các thuộc tính như chủ đề, nội dung, html_body, v.v.