Application.persistentDataPath seems not to work on iOS
I am currently developing a game where the user can send an e-mail with an attachment (CREDITS TO Om Shridhar https://www.linkedin.com/pulse/code-send-e-mail-attachment-from-unity-c-using-smtp-om-shridhar). It works very well in the unity Editor but not on my iOS device. The player tabs a button to execute Takescreenshot(); and another one to SendMail(); The code is the following:
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 = "";
public string ScreenshotName = "screenshot.png";
private string screenShotPath;
public MailerScript()
{
_sender = "here comes the sender mail";
_password = "here comes the password";
}
public void Takescreenshot()
{
screenShotPath = Application.persistentDataPath + "/scrn-1.jpg";
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 = "here comes the recipients mail";
string subject = "Test Mail";
string message = "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;
}
}
}
I really checked the internet for possible solutions for hours but with no luck. I really appreciate every help on this! Best wishes and thank you in advance!