簡體   English   中英

email 個人如何使用 csv 文件?

[英]How do I email individuals with csv files?

我對 python 相當陌生,我正在嘗試編寫一個代碼,該代碼將采用 csv 文件和 email 一行中的所有電子郵件,同時每次切換名稱。 這是我寫的:

import smtplib
import csv

def nobrackets(current):
    return str(current).replace('[','').replace(']','')
def noastrick(current):
    return str(current).replace('\'','').replace('\'','')

sender_email = "xxxxxxxxx"

password = "xxxxxxxxx"

names=[]
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(sender_email, password)
print("Login success")
with open('Emails.csv','r') as csv_file:
    csv_reader=csv.reader(csv_file)
    for line in csv_reader:
        names.append(line[0])
        message=('Hey', noastrick(nobrackets(names)),'how are you doing?')
        server.sendmail(sender_email, line, message)
        names.clear()

問題是,我成功登錄,但后來我收到一堆關於文件/系統/庫的文本,它給了我錯誤:TypeError:預期的字符串或緩沖區。 有誰知道發生了什么?

使用時

server.sendmail(sender_email, line, message)

message可以是包含 ASCII 范圍內的字符的字符串,也可以是字節字符串。 來自 smtplib.sendmail

但是,在您的代碼中, message是一個元組。 將其轉換為字符串,您應該對 go 很好。 例如:

server.sendmail(sender_email, line, " ".join(message))

如果您發布整個錯誤消息可能會有所幫助。 話雖這么說,只是猜測,它可能與您的消息字符串有關 - 看起來您將元組作為消息而不是字符串傳遞。

而不是:message=('Hey', noastrick(nobrackets(names)),'你好嗎?')

也許試試: message=(f'Hey {noastrick(nobrackets(names))} 你好嗎?')

該建議使用 f 字符串文字來制作一個字符串,其中您的函數結果作為字符串直接插入到字符串中,因此您的消息變量將包含一個字符串而不是元組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM