2014-07-10 1 views
4

Gmail을 보내려면 gapi를 사용하고 있습니다. 하지만 메일을 직접 보내면받은 편지함에는 나타나지 않습니다. 가장 이상한 것은 '보낸 편지함'폴더에 나타납니다.gmail api에서 이메일을 보내지 않았지만 보낸 폴더에 표시되었습니다.

"[↵ {↵ "id": "gapiRpc",↵ "result": {↵ "id": "1471e09d88000bf7",↵ "threadId": "1471e09d88000bf7",↵ "labelIds": [↵ "SENT"↵ ]↵ }↵ }↵]↵" 

그리고 Gmail의 '보낸 편지함'폴더에이 메일을 볼 수 있지만 내가받은 편지함에서 그것을하지 않았다 : `

function sendMessage(email, callback) { 
    // Web-safe base64 
    var base64EncodedEmail = btoa(email).replace(/\//g,'_').replace(/\+/g,'-'); 
    var request = gapi.client.gmail.users.messages.send({ 
     'userId': 'me', 
     'message': { 
      'raw': base64EncodedEmail 
     } 
    }); 
    request.execute(callback); 
} 

function send() { 
    var var to = '[email protected]', 
     subject = 'Hello World', 
     content = 'send a Gmail.' 

    var email = "From: 'me'\r\n"+ 
     "To: "+ to +"\r\n"+ 
     "Subject: "+subject+"\r\n"+ 
     "\r\n"+ 
     content; 
    sendMessage(email, function() { 
     console.log(arguments); 
    }); 
} 

` 콘솔의 정보 로그입니다 .

Received: from 823618323534-124pu7sujfj5olv94rkr0apqdppc6nti.apps.googleusercontent.com 
named unknown 
by gmailapi.google.com 
with HTTPREST; 
Wed, 9 Jul 2014 19:11:07 -0700 
From: [email protected] 
To: [email protected] 
Subject: Hello World 
Date: Wed, 9 Jul 2014 19:11:07 -0700 
Message-Id: <CADOxe9KLTdYfcb8OxWz[email protected]> 

send a Gmail. 

누구 이유를 알고 : '보낸 편지함'폴더에이 메일의 원본은 다음과 같다? 매우 감사합니다!

편집 : Mime 메시지의 '받는 사람 :'을 다른 사서함 (Gmail 아님)으로 변경하고 메일을 올바르게 수신합니다. 더 혼란스러워 함.

편집 : 'Cc': 필드를 추가합니다. [email protected] (myself), [email protected], [email protected], [email protected] 다른 모든 사람들 (Gmail 및 다른 편지함)은 메일을 받았지만 나 자신으로부터 메일을받을 수 없었습니다.

Received: from mail-qg0-f44.google.com (unknown [209.85.192.44]) 
by mx42 (Coremail) with SMTP id XMCowEAJvlfC_L1TjzExBg--.81S3; 
Thu, 10 Jul 2014 10:39:03 +0800 (CST) 
Received: by mail-qg0-f44.google.com with SMTP id j107so7126918qga.31 
    for <[email protected]>; Wed, 09 Jul 2014 19:38:57 -0700 (PDT) 
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; 
    d=gmail.com; s=20120113; 
    h=mime-version:from:date:message-id:subject:to:cc:content-type; 
    bh=zgoFEkSzE1bUNp54umXlfaDEDw5bLf2Ei0uFrgrVZic=; 
    b=UHOLwuTsFL9yajR0nn/TskbhVKrIfzX4OAsNDno4S2QIvwx83H5dOe2WMyFbL6Plmk 
    n4z2qzGjturoi1411+PGpgj8rt4Y57aDQpu7tEOMolMmFLJomtCSmagHIHhc0qwU+CRL 
    rTjO2ztwZoj/ejnqwcmANzgzMMnSxxkcIf3OvXhLm+j+5yHQvPhmGWIapFWJaTN+9gb9 
    Q47Qkqe5dBrsxOnGhgQnr1orbE5NcLIYumZTH1YfCMZvqIjUtmviUQUKpfhNQD5UtCX0 
    0J2moKK98Q5Vek4Wti/WtnEqOgNTzHkIL1M90eeAJKelyPu4TQ7G9GJxr1FX+s4WhgrM 
    xTFA== 
MIME-Version: 1.0 
X-Received: by 10.224.137.9 with SMTP id u9mr78577439qat.24.1404959937414; 
Wed, 09 Jul 2014 19:38:57 -0700 (PDT) 
Received: from 823618323534-124pu7sujfj5olv94rkr0apqdppc6nti.apps.googleusercontent.com 
named unknown by gmailapi.google.com with HTTPREST; Wed, 9 Jul 2014 19:38:56 -0700 
From: [email protected] 
Date: Wed, 9 Jul 2014 19:38:56 -0700 
Message-ID: <[email protected]om> 
Subject: Hello World 
To: [email protected] 
Cc: [email protected], [email protected], [email protected] 
Content-Type: text/plain; charset=UTF-8 
X-CM-TRANSID:XMCowEAJvlfC_L1TjzExBg--.81S3 
Authentication-Results: mx42; spf=pass [email protected]; dki 
m=pass [email protected] 
X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73 
VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjxUSeT5DUUUU 

send a Gmail. 

편집 :

내가 [email protected]에서받은 원래의 메일은 다음과 같다

Delivered-To: [email protected] 
Received: by 10.194.121.101 with SMTP id lj5csp1399131wjb; 
    Wed, 9 Jul 2014 19:38:58 -0700 (PDT) 
Return-Path: <[email protected]> 
Received-SPF: pass (google.com: domain of [email protected] designates 10.224.137.9 as  permitted sender) client-ip=10.224.137.9 
Authentication-Results: mr.google.com; 
    spf=pass (google.com: domain of [email protected] designates 10.224.137.9 as    permitted sender) [email protected]; 
    dkim=pass [email protected] 
X-Received: from mr.google.com ([10.224.137.9]) 
    by 10.224.137.9 with SMTP id u9mr68151154qat.24.1404959937949 (num_hops = 1); 
    Wed, 09 Jul 2014 19:38:57 -0700 (PDT) 
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; 
    d=gmail.com; s=20120113; 
    h=mime-version:from:date:message-id:subject:to:cc:content-type; 
    bh=zgoFEkSzE1bUNp54umXlfaDEDw5bLf2Ei0uFrgrVZic=; 
    b=UHOLwuTsFL9yajR0nn/TskbhVKrIfzX4OAsNDno4S2QIvwx83H5dOe2WMyFbL6Plmk 
    n4z2qzGjturoi1411+PGpgj8rt4Y57aDQpu7tEOMolMmFLJomtCSmagHIHhc0qwU+CRL 
    rTjO2ztwZoj/ejnqwcmANzgzMMnSxxkcIf3OvXhLm+j+5yHQvPhmGWIapFWJaTN+9gb9 
    Q47Qkqe5dBrsxOnGhgQnr1orbE5NcLIYumZTH1YfCMZvqIjUtmviUQUKpfhNQD5UtCX0 
    0J2moKK98Q5Vek4Wti/WtnEqOgNTzHkIL1M90eeAJKelyPu4TQ7G9GJxr1FX+s4WhgrM 
    xTFA== 
MIME-Version: 1.0 
X-Received: by 10.224.137.9 with SMTP id u9mr78577439qat.24.1404959937414; 
Wed, 09 Jul 2014 19:38:57 -0700 (PDT) 
Received: from 823618323534-124pu7sujfj5olv94rkr0apqdppc6nti.apps.googleusercontent.com 
named unknown by gmailapi.google.com with HTTPREST; Wed, 9 Jul 2014 19:38:56 -0700 
From: [email protected] 
Date: Wed, 9 Jul 2014 19:38:56 -0700 
Message-ID: <[email protected]om> 
Subject: Hello World 
To: [email protected] 
Cc: [email protected], [email protected], [email protected] 
Content-Type: text/plain; charset=UTF-8 

send a Gmail. 
+0

스팸 폴더에 저장되지 않았 음을 확인 했습니까? :) –

+0

음, 네! 모든 폴더를 확인했지만 여전히 찾을 수 없습니다. ( – FlyingHorse

+0

Gmail이 아닌 곳으로 보낼 때 수신 했습니까?받은 편지함이 보낸 편지함 폴더와 동일한 것으로 보입니까? –

답변

0

나 자신에게 대답한다. 먼저 messages.insert를 사용해 보았습니다. 그러나 '받는 사람'을 '수신자'(내 이메일 주소)와 동일하게 설정하면 메일은 여전히 ​​'보낸 사람'폴더에만 있습니다. 올바른 방법은 message.modify API를 사용하여 'INBOX'및 'UNREAD'레이블을 보낸 메일에 추가하는 것입니다.

gapi.client.request({ 
    path: "gmail/v1/users/me/messages/" + messageid + "/modify", 
    method: "POST", 
    body: "{\"addLabelIds\": [\"UNREAD\",\"INBOX\"]}", 
    callback: function() { 
     console.log("gmail sent to self"); 
     return console.log(arguments); 
    } 
}) 

'messageid'는 송신 API의 ID 반환을 나타냅니다.

+0

필자는 실제로 "올바른 방법"을 수행 한 후에 messages.modify를 사용하여 말하지는 않겠지 만 현재 필요한 것은 이에 동의합니다. 인증 된 사용자의받은 편지함에 메시지를 넣고 싶다면 messages.insert가 의미가 있습니다. 임의의 레이블을 지정할 수 있습니다. 실제로 보내는 경우 (예 :이 사용자를 포함하여 모든 사용자에게 전달 될 수 있음) messages.send가 올바른 해결책입니다. –

0

그래서에 : [email protected] 원래 메일이 다음과 같다 그것은 분명히 다른 사람들에게 보내는 메일을 보낸다. 자신에게 메일을 보내는 경우 (정확히 왜 이것을하고 있습니까? 실제로는 messages.insert를 사용하는 것과는 대조적으로 필요한 것입니까?) 메일은 보낸 사람에게만 표시되지만받은 편지함에는 표시되지 않습니다. 메일 사본 하나만 가져 오면 API 나 웹 UI를 불문하고 동일합니다. 문제는 웹 UI가 보낸 메일뿐만 아니라 INBOX에도 해당 메시지를 넣는 것입니다. (당신이 알 수 있듯이, Message-Id 헤더에 기반을 둔 속보 탐지 같은 것들 때문에 자신에게 보내는 것이 특별한 경우이다.)

+0

입니다. 네가 한 말은 나에게 많은 도움이된다. 마침내 나는 사용자/메시지/수정 api를 사용하여 'SENT'폴더의 메일에 '수신 거부'및 '수신 거부'라벨을 추가합니다. 이것은 내 문제를 완벽하게 해결했습니다. – FlyingHorse

+0

GmailGuy : 여전히 messages.send API가이 작업을 수행해야합니다. 이제 사용자에게 이메일을 보내고받은 편지함에 표시하기를 원하기 때문에 사용자에게 "https://www.googleapis.com/auth/gmail.modify"인증 범위를 요청해야합니다. –

+1

예, messages.send (to = me)가이를 수행해야한다는 데는 동의합니다. 버그입니다. 1 ~ 2 주 후에 다시 확인하십시오. –

0

테스트되지 않은 아이디어 : X-Gmail-Labels: Inbox 헤더를 messages.send REST 통화에 추가하면 Gmail에서 라벨을 추가 할 수 있습니다. mbox 파일에 Gmail의 일부 라벨에 대한 Google 테이크 아웃을 수행 할 때이 헤더를 보았습니다.

관련 문제