在C#中为Gmail API创建邮件

时间:2014-07-14 02:26:37

标签: c# gmail-api

我正在寻找在我正在处理的应用程序中使用Gmail API的方法。但是,我不确定如何将他们的Java或Python示例更改为C#。现有样本的确切变化情况如何?

Sample found here.

3 个答案:

答案 0 :(得分:9)

以下是我能够使用documentation开始工作的内容。

class LSController:
def __init__(self, ssh_ip, ssh_user, ssh_pass, telnet_port):
    server = SSHTunnelForwarder(
    (ssh_ip, 22),
    ssh_username=ssh_user,
    ssh_password=ssh_pass,
    remote_bind_address=('127.0.0.1', telnet_port)
    )

    server.start()
    HOST = "localhost"
    tn = telnetlib.Telnet(HOST,server.local_bind_port)
    self.tn = tn        

    #get initial info
    tn.read_until('')
    tn.write('request.all\n')
    tn.read_until('END')

def send_command(self, command):
    self.tn.write(command + '\n')
    return self.tn.read_until('END')

@Eric Gmail Api缺乏,因为它要求消费者必须经历几次舞蹈才能做一些相对基本的事情。对于.Net,它应该像填充Message对象(使用Subject,From,To,Body等)一样简单,并将该对象传递给处理编码的Send函数。

至少,Api文档应该提供一个完整的工作示例,不需要像MimeKit或AE.Net.Mail这样的第三方库。

注意:如果您收到电子邮件退回问题,可能是由于未设置ReplyToList字段。请参阅:MimeKit

答案 1 :(得分:7)

这是一个棘手的问题需要解决,但我最终得到了它。我使用NuGet包AE.Net.Mail来获取RFC 2822位。

using System.IO;
using System.Net.Mail;
using Google.Apis.Gmail.v1;
using Google.Apis.Gmail.v1.Data;

public class TestEmail {

  public void SendIt() {
    var msg = new AE.Net.Mail.MailMessage {
      Subject = "Your Subject",
      Body = "Hello, World, from Gmail API!",
      From = new MailAddress("[you]@gmail.com")
    };
    msg.To.Add(new MailAddress("yourbuddy@gmail.com"));
    msg.ReplyTo.Add(msg.From); // Bounces without this!!
    var msgStr = new StringWriter();
    msg.Save(msgStr);

    var gmail = new GmailService(MyOwnGoogleOAuthInitializer);
    var result = gmail.Users.Messages.Send(new Message {
      Raw = Base64UrlEncode(msgStr.ToString())
    }, "me").Execute();
    Console.WriteLine("Message ID {0} sent.", result.Id);
  }

  private static string Base64UrlEncode(string input) {
    var inputBytes = System.Text.Encoding.UTF8.GetBytes(input);
    // Special "url-safe" base64 encode.
    return Convert.ToBase64String(inputBytes)
      .Replace('+', '-')
      .Replace('/', '_')
      .Replace("=", "");
  }
}

相同的代码,稍加进一步的分析和原因在这里发布: http://jason.pettys.name/2014/10/27/sending-email-with-the-gmail-api-in-net-c/

答案 2 :(得分:0)

似乎这并不是Gmail API的真正问题。您应该寻找的是" c#创建电子邮件" (可能会添加" RFC 2822"因为这是定义这些电子邮件格式的RFC)。一旦你有了这样一个有效的"电子邮件消息" (可以与SMTP或IMAP一起使用的真实,完整的电子邮件内容等)然后将其与Gmail API一起使用应该非常简单。