How to send an email with an attachment ios U3DXT

How do I send an email with an attachment using the U3dxt plugin.
I have tried using the mail anything script that U3dxt provides but I have to call the function twice for the mail window to show and when I cancel or send, the window does not return to the app.

http://unity3d.tutsmobile.com/mail-anything-with-unity3d/

Thank you

Hi @777mike777
I found this solution:

  1. Use the following code(CREDITS GO TO: Om Shridhar! Original Website: Code to send an e-mail with attachment from Unity / C# using SMTP.):

using System;

using System.Net;

using System.Net.Mail;

using System.Collections;

using System.Net.Security;

using System.Security.Cryptography.X509Certificates;

using System.IO;

public class MailerScript : MonoBehaviour
{

string _sender = "";
string _password = "";
private string ScreenshotName = "/screenshot.jpg";
private string screenShotPath;
public MailerScript()
{
	_sender = "the_mail_of_the_sender";
	_password = "sender_pw";
}

public void Takescreenshot()
{
	Debug.Log (screenShotPath = Application.dataPath);
	screenShotPath = Application.persistentDataPath + ScreenshotName;
	Texture2D tex = new Texture2D (Screen.width, Screen.height);
	tex.ReadPixels (new Rect(0, 0, Screen.width, Screen.height), 0, 0);
	tex.Apply ();
	var bytes = tex.EncodeToJPG();
	Destroy (tex);
	System.IO.File.WriteAllBytes(screenShotPath, bytes);
	//screenShotPath = Application.persistentDataPath + "/" + ScreenshotName;
	//if(File.Exists(screenShotPath)) File.Delete(screenShotPath);
	Application.CaptureScreenshot(ScreenshotName);
	Debug.Log ("TAKESCREENSHOT FUNCTION EXECUTED");
}

public void SendEmail()
{
	Debug.Log ("SEND EMAIL FUNCTION EXECUTED");
	//For File Attachment, more files can also be attached
	Attachment att = new Attachment(@screenShotPath);
	//tested only for files on local machine

	//Hardcoded recipient email and subject and body of the mail
	string recipient = "the_recipients_email";
	string subject = "Testmail from App";
	string message = "Test_Hello_World";

	SmtpClient client = new SmtpClient("smtp.gmail.com");
	//SMTP server can be changed for gmail, yahoomail, etc., just google it up

	client.Port = 25;
	client.DeliveryMethod = SmtpDeliveryMethod.Network;
	client.UseDefaultCredentials = false;
	System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(_sender, _password);
	client.EnableSsl = true;
	client.Credentials = (System.Net.ICredentialsByHost)credentials;

	try
	{
		var mail = new MailMessage(_sender.Trim(), recipient.Trim());
		mail.Subject = subject;
		mail.Body = message;
		mail.Attachments.Add(att);
		Debug.Log("Attachment is now Online");
		ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
		{
			return true;
		};

		client.Send(mail);
		Debug.Log("Success");
	}
	catch (Exception ex)
	{
		Debug.Log(ex.Message);
		throw ex;
	}
}

}

  1. Edit the code so it matches your mail setup (sender, password, recipient, smtp client…)

  2. Use Takescreenshot()-function to Take a screenshot and SendMail() to send the mail with the attachment.

  3. It will now work in UNITY EDITOR BUT NOT ON IOS BUILD!!!

  4. Open your computers text editor application (I used Mac → Text Edit) and paste the following code (CREDITS GO TO: Josh Peterson! Original thread: https://forum.unity3d.com/threads/ios-xcode-error-when-using-system-net-mail.334932/):

Name it “link” and safe it as a .xml-file (it will be: link.xml)

  1. Add this link.xml to your assets folder in your Unity project and build it for iOS.
    → the link.xml prevents the needed libraries to be stripped when builing to iOS plattform!

  2. Now you should be able to send an email WITH an attachment to the recipients mail address :slight_smile: