2011-07-03 3 views
4

저는 파이어 폭스의 smtplib을 사용하여 gmail을 통해 bcc 주소로 이메일을 보내려고합니다. 은이 코드를 사용숨은 참조 [표시/보이지 않음] 문제

#imports etc... 
fromAddr = [email protected] 
to = [ [email protected] ] 
cc = [ [email protected] ] 
bcc = [ [email protected], [email protected] ] 
server = SMTP("smtp.gmail.com", 587) 
#starttls, login, etc.. 
content = "Hello, this is a message." 
msg = "From: %s\r\nTo:%s\r\nCc: %s\r\n\r\n%s" % (from, to, cc, content) 
server.sendmail(fromAddr, to + cc + bcc, msg) 
#server.quit() etc... 

-> 나는이 모든 주소에 대해 동일한 메시지가 각각 Inboxs에 갈 때 [에 + CC + 숨은 참조], 느릅 나무는 권리입니다. 하지만 난이 일어날 싶은 것이

각 숨은 참조 주소 그냥 Gmail을의 웹 인터페이스에 대한 here에 설명되어 좋아, 거기에 자신의 주소와 숨은 참조 필드를 얻었다이었다.

참조하고받은 편지함으로 :

To: [email protected] 
From: [email protected] 
Cc: [email protected] 
(...) 

recpt3받은 편지함 :

To: [email protected] 
From: [email protected] 
Cc: [email protected] 
Bcc: [email protected] 
(...) 

recpt4받은 편지함 :

내가 달성하고자하는 것입니다

To: [email protected] 
From: [email protected] 
Cc: [email protected] 
Bcc: [email protected] 
(...) 

사람을 가지고 그럭저럭 얻을 수 있었다 이게 효과가 있니? 나는 smtp rfc 문서를보고 있었고 나는 아무것도 발견하지 못했다. 나는 Gmail이 그것을 어떻게 할 수 있는지 이해하지 못했다.

답변

1

내 생각에 gmail은 각 숨은 참조 수신자마다 별도의 SMTP 세션을 수행한다. 더불어, tocc 주소 (들)에 한 번 보낼 것

dosend(fromAddr, to+cc, content, to, cc) 
for t in bcc: 
    dosend(fromAddr, t, content, to, cc, t) 

는 다음 개별적으로 각 bcc 주소로 다시 보내 : 당신의 두 의견 사이에있는 모든 함수 인 경우 dosend(fromAddr, toAddr, content, to, cc, bcc=None) 당신은 이런 식으로 뭔가를 할 수 적절한 bcc 헤더 dosend가하는 일을 명확히하기 위해서 : fromAddrtoAddr 인수는 봉투를위한 것이다 (첫번째와 두번째 인수는 server.sendmail). to, cc 및 (선택 사항) bcc 인수는 msg의 헤더에 대한 인수입니다. (코드에 숨은 참조가 추가되지 않으면 선택적 인수가 bcc 인 경우 추가해야합니다.

(편집 : X-BCC를 사용할 가능성에 대한 의견을 삭제했습니다. 방금 시도했습니다. 위에 설명 된대로 작동합니다. dosend의 설명을 수정하고 명확하게했습니다.)

+0

예 ... 저는이 방법을 사용하지 않으려 고했지만 지금은 유일한 해결책 인 것 같습니다. 고마워 adrewdski – ffunenga

+0

Btw : 나는 당신이 당신의 편집()에서 언급 한 "x-bcc"(필드?)에 관해 아무것도 설립하지 않았습니다. 그것이 무엇인지 설명해 주시겠습니까? – ffunenga

+0

죄송합니다. 제가 편집했기 때문입니다. 나는 그 일을하기 전에 당신 (또는 다른 누구)이 제 대답을 보았을 때를 대비해서 그 것을 넣었습니다. 숨은 참조 헤더를 보내는 것이 합법적 인 SMTP가 아니라고 생각했습니다. 이 경우 X-Bcc 대신 Gmail 사용자 에이전트가이를 표시 할 때 숨은 참조로 전환 할 수 있습니다. 그러나 그럴 것 같지 않습니다. – andrewdski