KRNSendEmail 是一个帮助您从 iOS 应用程序中发送电子邮件的简单类。
KRNSendEmail 的所有方法都是静态的,因此您可以直接调用任何方法,无需分配 KRNSendEmail 实例。
在发送电子邮件之前,您应该检查您的系统是否支持此操作。使用方法 +(BOOL)canSend
进行此目的。
if ([KRNSendEmail canSend]) {
// call method to send email
}
对于发送邮件,您可以使用以下便捷方法之一
+ (BOOL)sendFromViewController:(UIViewController *)viewController toRecipient:(NSString *)recipient withSubject:(NSString *)subject withMessage:(NSString *)message withCompletion:(void(^)(KRNSendEmailResult result, NSError *error)) completion; // send email to one recipient
+ (BOOL)sendFromViewController:(UIViewController *)viewController toRecipients:(NSArray<NSString *>*)recipients withSubject:(NSString *)subject withMessage:(NSString *)message withCompletion:(void(^)(KRNSendEmailResult result, NSError *error)) completion; // send email to many recipients
作为结果,完成块将被调用,您可以在 KRNSendEmailResult 枚举参数中处理结果。您可以通过调用 +(NSString *)sendEmailResultStringRepresentation:(KRNSendEmailResult)result
方法来获取此枚举的便捷字符串表示。
要发送带有附件的电子邮件,您必须创建一个(或多个)KRNEmailAttachment
类的实例。每个实例或 KRNEmailAttachments 都需要 NSData,该数据将扮演附件的角色,NSString 表示附件的 mime-type,以及一个表示附件文件名的 NSString。如果文件名是空值,则将生成一个随机文件名。您可以通过继承 KRNEmailAttachments 类来简化添加常用附件。库已经包含 KRNImageAttachment 类,您可以使用它来添加含 UIImage 实例的附件。
您可以将一个或多个 KRNEmailAttachments 传递到 KRNSendEmail 类的适当静态方法中,如下例所示。
if ([KRNSendEmail canSend]) {
UIImage *image = [UIImage imageNamed:@"schoolFullImage"];
UIImage *image2 = [UIImage imageNamed:@"babyFullImage"];
KRNImageAttachment *attachment = [KRNImageAttachment pngAttachmentWithImage:image andName:@"school"];
KRNImageAttachment *attachment2 = [KRNImageAttachment pngAttachmentWithImage:image2 andName:@"baby"];
[KRNSendEmail sendFromViewController:self toRecipients:@[_firstEmail.text, _secondEmail.text] withSubject:_subject.text withMessage:_message.text withAttachments:@[attachment, attachment2] withCompletion:^(KRNSendEmailResult result, NSError *error) {
if (error) {
NSLog(@"Error - %@", error.localizedDescription);
} else {
NSLog(@"%@", [KRNSendEmail sendEmailResultStringRepresentation:result]);
}
}];
}
KRNSendEmail 在 MIT 许可下发布。有关详细信息,请参阅 LICENSE。
有任何建议或问题?请创建一个 GitHub issue 或联系我。