【问题标题】:ios sent image to mail client from app is not displayedios从应用程序发送图像到邮件客户端不显示
【发布时间】:2013-05-25 23:00:31
【问题描述】:

我想在我的应用程序上打开本机邮件客户端并发送以下内容:

NSString *subject = [NSString stringWithFormat:@"%@", self.selectedProposal.title];

NSString *mail = [NSString stringWithFormat:@""];

NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation( self.logoImageView.image )];
CreditCalculatorModel *model = [CreditCalculatorModel tlSharedInstance];
NSString *emailBody = @"";
emailBody = [emailBody stringByAppendingString:[NSString stringWithFormat:@"<p><center><img src='data:image/png;base64,%@'></center></p>", [imageData base64EncodedString]]];
emailBody = [emailBody stringByAppendingFormat:@"<p><center><h4>%@</h4></center></p>", self.selectedProposal.title];
emailBody = [emailBody stringByAppendingString:@"<br />"];
emailBody = [emailBody stringByAppendingString:self.amountLabel.text];
emailBody = [emailBody stringByAppendingString:@"<br />"];
emailBody = [emailBody stringByAppendingString:self.initialLabel.text];
emailBody = [emailBody stringByAppendingString:@"<br />"];
emailBody = [emailBody stringByAppendingString:self.creditAmountLabel.text];
emailBody = [emailBody stringByAppendingString:@"<br />"];
emailBody = [emailBody stringByAppendingFormat:@"Процентная ставка: %@", self.rateLabel.text];
emailBody = [emailBody stringByAppendingString:@"<br />"];
emailBody = [emailBody stringByAppendingFormat:@"Эффективная ставка: %@", self.efficientRateLabel.text];
emailBody = [emailBody stringByAppendingString:@"<br />"];
emailBody = [emailBody stringByAppendingFormat:@"Ежемесячный платёж: %@", self.paymentLabel.text];
emailBody = [emailBody stringByAppendingString:@"<br />"];
emailBody = [emailBody stringByAppendingFormat:@"Переплата по кредиту: %@", self.overheadLabel.text];
emailBody = [emailBody stringByAppendingString:@"<br />"];
emailBody = [emailBody stringByAppendingString:@"<br /></h5>График платежей</h5><br />"];
emailBody = [emailBody stringByAppendingString:@"<table border='1'>"];
emailBody = [emailBody stringByAppendingString:@"<tr><td>Месяц</td><td>Задолженность</td><td>Платёж</td></tr>"];
for ( int i = 0; i < model.term; i++ )
{
    emailBody = [emailBody stringByAppendingFormat:@"<tr><td>%d</td><td>%@ р.</td><td>%@ р.</td></tr>",
                 i + 1,
                 [self.unicomDecimalNumberFormatter stringFromNumber:@((int) [CreditCalculatorModel deptForMonth:i
                                                                                                        withRate:[self.selectedProposal.rate doubleValue]/100
                                                                                                       andAmount:model.amount
                                                                                                         andTerm:model.term
                                                                                                      andInitial:model.initial
                                                                                                      andAnnuity:!self.selectedProposal.payment_type])],
                 [self.unicomDecimalNumberFormatter stringFromNumber:@((int) [CreditCalculatorModel paymentForMonth:i
                                                                                                           withRate:[self.selectedProposal.rate doubleValue]/100
                                                                                                          andAmount:model.amount
                                                                                                            andTerm:model.term
                                                                                                         andInitial:model.initial
                                                                                                         andAnnuity:!self.selectedProposal.payment_type])]
                 ];
}
emailBody = [emailBody stringByAppendingString:@"</table>"];






NSString *recipients = @"mailto:?to=";

NSString *subjectMessage = [NSString stringWithFormat:@"&subject=%@", subject];

NSString *bodyMessage = [NSString stringWithFormat:@"&body=%@", emailBody];

NSString *email = [NSString stringWithFormat:@"%@%@%@", recipients, subjectMessage, bodyMessage];

email = [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:email]];

一切都很好,除了图像表示。它不显示。在图像的地方只出现一个小的空矩形。 图像表示在电话选项中处于打开状态。 而且我不能用 MFMailComposeViewController 完成这项任务。 感谢您的帮助

【问题讨论】:

  • 为什么您认为移动 Safari 浏览器会在显示您的电子邮件消息时自动解码您的 Base64Encoded 图像?
  • 为什么不能使用MFMailComposeViewController
  • 我不能使用MFMailComposeController,因为我在右边的SideBar控制器上初始化了这个动作,显然大小有很多问题。
  • Michael Dautermann,据我所知,基本上,本地邮件和 safari 使用 Base64Encoded 图像进行表示。实际上,我可以在 Safari 中打开我的图片链接,一切正常。
  • imageData=nil 还是[imageData base64EncodedString]=nil有机会吗?

标签: ios image file


【解决方案1】:

试试这个方法:

    MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
    mailer.mailComposeDelegate = self;
    [mailer setSubject:@"Message"];
    NSArray *toRecipients = [NSArray arrayWithObjects:@"fisrtMail@example.com", @"secondMail@example.com", nil];
    [mailer setToRecipients:toRecipients];
    UIImage *myImage = [UIImage imageNamed:@"yourImage.png"];
    NSData *imageData = UIImagePNGRepresentation(myImage);
    [mailer addAttachmentData:imageData mimeType:@"image/png" fileName:@"mobiletutsImage"];
    NSString *emailBody = @"your email body";
    [mailer setMessageBody:emailBody isHTML:NO];
    [self presentModalViewController:mailer animated:YES];
    [mailer release];

【讨论】:

  • 正如我之前所说的,我可以使用 MFMailComposeViewController。我只需要将我的图像发送到邮件客户端。不过,谢谢你的建议!
猜你喜欢
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-30
  • 2016-10-31
  • 2012-07-07
相关资源
最近更新 更多