はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】メールを送ることができるようにする「UniMail」の紹介と使い方(Win, OSX, iOS)

はじめに

今回はメールを送ることができるようになるUniMailについて紹介したいと思います。

github.com

また画像付きでメールを送る機能も実装されているのですが、画像付きはiOSのみ対応なことに注意です。

対応プラットフォーム

Send email with image
  • iOS
Send email without image
  • OSX
  • OSX/Editor
  • Windows
  • Windows/Editor
  • iOS

GitHub - kyubuns/UniMail: Send mail (with image) from unity

インストール方法

Releaseページより最新の.unitypackageをダウンロードし、Unityへインポートしてください。

github.com

使い方

画像なしのメールの送り方

// 実際に利用するときは【】の箇所を削除してください
UniMail.Mail.Send("【宛先】hogehoge.gmail.com", "【件名】hoge", "【本文】fuga");

画像ありのメールの送り方

// 実際に利用するときは【】の箇所を削除してください
UniMail.Mail.SendWithImage("【宛先】hogehoge.gmail.com", "【件名】hoge", "【本文】fuga", "【画像のパス】fugafuga");

大体はScreenCapture.CaptureScreenshotを利用して撮影したスクリーンショットのパスを、SendWithImageの引数のimagePathに入れることが多そうです。

docs.unity3d.com

また公式のサンプルは以下の通り。

private static readonly string ScreenShotFileName = "ScreenShot.png";
private static string ScreenShotPath
{
	get
	{
		if (Application.platform == RuntimePlatform.IPhonePlayer) return Path.Combine(Application.persistentDataPath, ScreenShotFileName);
		return ScreenShotFileName;
	}
}

public void SendEmailWithScreenShot()
{
	StartCoroutine(CaptureScreenShot(() =>
	{
		Mail.SendWithImage("unimail@example.com", "subject", "body1\nbody2", ScreenShotPath);
	}));
}

private IEnumerator CaptureScreenShot(Action callback)
{
	Directory.CreateDirectory(Application.persistentDataPath);
	if (File.Exists(ScreenShotPath)) File.Delete(ScreenShotPath);
	ScreenCapture.CaptureScreenshot(ScreenShotFileName);

	yield return new WaitUntil(() => File.Exists(ScreenShotPath));
	callback();
}

UniMail/Sample.cs at master · kyubuns/UniMail · GitHub