How to send GTLRGmail_Message with attachment

无人久伴 提交于 2019-12-08 13:20:31
Constantin Saulenco

so the solution is a modified a little the Vea answer is not the prettier one but:

GTLRUploadParameters *uploadParam = [[GTLRUploadParameters alloc] init];
uploadParam.MIMEType = @"message/rfc822";
uploadParam.data = [self getFormattedRawMessage];

GTLRGmail_Message *message = [[GTLRGmail_Message alloc] init];

GTLRGmailQuery_UsersMessagesSend *query = [GTLRGmailQuery_UsersMessagesSend queryWithObject:message userId:@"constantin.saulenco@gmail.com" uploadParameters:uploadParam];

[self.service executeQuery:query completionHandler:^(GTLRServiceTicket * _Nonnull callbackTicket, id  _Nullable object, NSError * _Nullable callbackError) {

    NSData *data  = callbackError.userInfo[@"data"];
    NSString *string = [[NSString alloc] initWithData:data encoding:0];

    NSLog(@"%@",string);
}];

and getFormattedRawMessage :

- (NSData *)getFormattedRawMessage
{
    // Date string
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    dateFormatter.dateFormat = @"EEE, dd MMM yyyy HH:mm:ss Z";
    NSString *strDate = [dateFormatter stringFromDate:[NSDate date]];
    NSString *finalDate = [NSString stringWithFormat:@"Date: %@\r\n", strDate];

    // From string
    NSString *from = @"From: <constantin.saulenco@gmail.com>\r\n";

    // To string
    NSString *to = @"To: <constantin.saulenco@mobiversal.com>\r\n";

    // CC string
    NSString *cc = @"";

    // BCC string
    NSString *bcc = @"";

    // Subject string
    NSString *subject = @"Subject: New stuff\r\n\r\n";

    // Body string
    NSString *body = @"Hello my friend, \n can you please call me when have free time. \nMark. \r\n";

    // Final string to be returned
    NSString *rawMessage = @"";

    // Send as "multipart/mixed"
    NSString *contentTypeMain = @"Content-Type: multipart/mixed; boundary=\"project\"\r\n";

    // Reusable Boundary string
    NSString *boundary = @"\r\n--project\r\n";

    // Body string
    NSString *contentTypePlain = @"Content-Type: text/plain; charset=\"UTF-8\"\r\n";

    // Combine strings from "finalDate" to "body"
    rawMessage = [[[[[[[[[contentTypeMain stringByAppendingString:finalDate] stringByAppendingString:from]stringByAppendingString:to]stringByAppendingString:cc]stringByAppendingString:bcc]stringByAppendingString:subject]stringByAppendingString:boundary]stringByAppendingString:contentTypePlain]stringByAppendingString:body];


    // Image Content Type string
    NSString *contentTypeJPG = boundary;
    contentTypeJPG = [contentTypeJPG stringByAppendingString:[NSString stringWithFormat:@"Content-Type: image/jpeg; name=\"%@\"\r\n",@"IMG_1253.jpg"]];
    contentTypeJPG = [contentTypeJPG stringByAppendingString:@"Content-Transfer-Encoding: base64\r\n"];

    // PNG image data
    UIImage *image = [UIImage imageNamed:@"IMG_1253.jpg"];
    NSData *jpegData = UIImageJPEGRepresentation(image, 1);
    NSString *imageBase64String = GTLREncodeBase64(jpegData);
    NSString *pngString = [NSString stringWithFormat:@"%@\r\n",imageBase64String];
    contentTypeJPG = [contentTypeJPG stringByAppendingString:pngString];

    // Add to raw message
    rawMessage = [rawMessage stringByAppendingString:contentTypeJPG];


    // End string
    rawMessage = [rawMessage stringByAppendingString:@"\r\n--project--"];

    return [rawMessage dataUsingEncoding:NSUTF8StringEncoding];
}

but i still what to know how to use GTLRGmail_MessagePartBody and GTLRGmail_MessagePartHeader for message.payload

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!